Em MVVM são DataTemplates considerados Visualizações como UserControls são Visualizações?

StackOverflow https://stackoverflow.com/questions/1016828

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?

Foi útil?

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.

Eu não recomendaria usar um DataTemplate para ligar a vista para o viewmodel. Atualmente, estou tendo problemas de desempenho usando essa abordagem como a vista é toda renovada a visão recebe foco. Como você pode ver aqui e aqui

Unfortunatley eu não encontrei uma opção melhor ainda.

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