Pergunta

Eu tenho feito um protótipo em WPF sem usar MVVM. Tem que tamanho tal agora que estou refatoração-lo a usar MVVM.

Quando eu comecei o projeto, eu pulei direto e criado UserControls para muitas coisas.

Agora estou quebrando as coisas em exibições e ViewModels. Mas, eu estou terminando com vistas que contêm UserControls; os UserControls tem ligações para o que agora são objetos no modelo.

Assim, é a noção de UserControls agora mortos em MVVM? O que quero dizer é, no passado (WinForms, ASP.NET, etc.) você tem um projeto chamado 'Controles' e reutilizar estes. 'Ver' em MVVM é um substituto direto do UserControl típico?

Foi útil?

Solução

A UserControl em WPF é pouco mais do que um ContentControl com alguns valores de propriedade padrão beliscada. A ContentControl é pouco mais que um pedaço de conteúdo que pode ter um modelo aplicado para definir a sua aparência.

O que eu faço MVVM ignora os pontos de vista intermediário e define como DataTemplates. Então você só precisa manter sua VM em algum lugar árvore visual do WPF e WPF irá torná-lo com o seu DataTemplate. Por exemplo:

<ContentControl Content="{Binding SomeViewModel}"/>

<ItemsControl ItemsSource="{Binding SomeViewModels}"/>

Outras dicas

A forma como eu vejo UserControls no mundo MVVM é como um View. Ao invés de pensar em seu formulário WPF como um único ponto de vista, você pode pensar nisso como um composto de uma ou mais vistas. Assim, um UserControl podem encapsular uma vista padrão re-utilizável que podem ser incorporados em vários pontos de vista de composição. Ótimo para reutilização e ainda eles ainda são testáveis.

Mmmm ... quando eu tinha controles de usuário que acabou de passar o DataContext do Vista para o controle de usuário (o subinfo necessário para que o controle de usuário). Mas é verdade, que às vezes é difícil para caber ViewModel com vistas, UserControls, ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top