Pergunta

Estou tentando entender o básico MVVM abordagem de design quando utilizar ItemsControl ao ligar via DataTemplates para ObservableCollections sobre o ViewModel.

Eu já vi exemplos que se ligam a ObservableCollections de cadeias de caracteres, Pontos de vista, e ViewModels.

Ligação para cadeias parece ser apenas para demos, é obrigatório para "ViewModels que contêm coleções de pontos de Vista que contêm coleções de ViewModels"que o poder do WPF parece realmente sair.

Para aqueles de uso proficiente no padrão MVVM, qual é a sua abordagem padrão para ligação de ItemsControl, ListView, caixa de Listagem para coleções em um ViewModel? Eu estou olhando para o conselho de experiência como esta:

  • use sempre ObservableCollection<...> e nunca Lista<...> porque...
  • algo melhor do que ItemsControl para apresentar uma colecção de...
  • a fim de obter a filtragem para trabalhar no seu ViewModel em vez de code-behind, use...
  • usar conjuntos de pontos de Vista quando ...e as coleções de ViewModels quando...
  • 90% do tempo eu criar um ItemsControl e vinculá-lo a uma ObservableCollection de pontos de Vista que têm as suas próprias ViewModels...
Foi útil?

Solução

Eu usaria uma observação da ViewModels pelos seguintes motivos:

  • O ObservableCollection já possui eventos disponíveis para sinalização quando foi modificado (por exemplo, quando os itens são adicionados/removidos da coleção).
  • Estamos na 'camada' do ViewModel, por isso fornece uma separação mais limpa para que um viewmodel contenha uma coleção de models de vista em vez de visualizações
  • Se for necessário modificar ou obter dados de itens dentro da coleção, você poderá modificar/acessar mais facilmente esses dados se os itens forem modelos de exibição (se eles forem visualizações, você frequentemente lançará o datacontext da exibição ou acessando seus elementos da interface do usuário).

Outras dicas

Gosto de usar uma observação de viewmodels. A visualização que se liga à coleção pode definir um datatemplate que dá ao ViewModel sua aparência. Isso leva a menos acoplamento entre os componentes.

Eu tenho a mesma pergunta, mas substitua o "vista" com o "modelo".:)

Eu tenho um MODELO com um conjunto de outros modelos.Eu quero o meu viewmodel para ter uma coleção observável de outros viewmodels, mas uma vez eu instanciá-lo como a conexão entre o modelo de recolha de conteúdo é perdido.Faça agora eu preciso para começar a fiação todos os eventos da viewmodels observáveis coleção de volta para os modelos da coleção?

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