Em MVVM são DataTemplates considerados Visualizações como UserControls são Visualizações?
-
06-07-2019 - |
Pergunta
Em MVVM, cada View tem um ViewModel. Uma ideia que eu entendo ser um Janela, Page ou UserControl para o qual você pode anexar um ViewModel a partir do qual a visão obtém seus dados.
Mas a DataTemplate também pode renderizar uma base de dados de ViewModel.
Então, eu entendo um DataTemplate ser outro "View", mas parece haver diferenças , por exemplo, Janelas, Pages, e UserControls podem definir suas próprias .dlls, um tipo é preso com DataContect o outro através anexando um modelo para que o Windows, Pages, UserControls pode pode ser conectado a ViewModels dinamicamente por um ServiceLocator / Container , etc.
De que outra forma são DataTemplates diferente do Windows / pages / UserControls quando se trata de tornar os dados de um ViewModel no UI? E há outros tipos de "Visualizações" Para além destas quatro?
Solução
A forma como eu usá-lo, o DataTemplate é realmente a maneira de ligar o Vista para o ViewModel. Normalmente meus DataTemplates em MVVM olhar assim:
<DataTemplate DataType="{x:Type vm:FooViewModel}">
<v:FooView />
</DataTemplate>
Outras dicas
O que está a fazer mais sentido para mim neste momento da transição para MVVM é:
UserControls: pontos de vista e controles juntos que se destinam a executar todo um processo para o usuário do Grupo. Eu uso um usercontrol para uma gaveta de slide-out que eu criei que permite que um usuário para percorrer diferentes classificações de partes (onde cada principais routs categoria parte do usuário através de seu próprio processo de seleção / assistente). Também olhar para controles gráficos.
Visualizações:. Basicamente uma grade que grupos relacionados de dados e controles que preencher os dados no menor nível desejado para que ele possa ser reutilizado
DataTemplates: fatos Grupo sobre "itens", como em uma caixa de listagem ou GridView. Penso nisso como apenas como o que texto representa um objeto que você está tentando obter informações sobre em uma lista. Assim, um modelo de controle envolveria os blocos do modelo de dados para controlar o comportamento de que a coleta de itens envolveu-modelo de dados de exibição.
É assim que eu entendo isso, mas os limites são muito difusa. I como o livro Apress Pro Expression Blend 4 por Andrew Troelson. Ele realmente não dar qualquer exemplos dados pesados, no entanto.