Pergunta

Eu tenho uma visão pai que define uma visão da criança no XAML. A visão da criança tem um DependencyProperty Isso está vinculado ao viewModel da visão dos pais. No entanto, esse valor também é necessário para o ViewModel da visualização da criança.

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildId é implementado como uma propriedade de dependência do ChildView ao controle. Se o ChildViewModel precisa ParentFooId, qual é a maneira adequada do MVVM de obtê -lo?

Eu não quero lançar o DataContext do ChildView dentro de ChildViewModel e definir valor em um OnChildIdChanged manipulador do ChildView. Isso não parece muito MVVM-ish para mim.

A outra alternativa que pensei era criar um novo ChildViewModel com o valor e defina -o como o DataContext no OnParentFooIdChanged evento (no ParentViewModel); Mas isso também não parece certo, já que os viewmodels devem ficar alheios à visão (e, portanto, não sei nada sobre DataContexts).

Parece que estou faltando algo óbvio ...

Foi útil?

Solução

Se eu entender a pergunta corretamente, você só precisa criar o modelo de visualização da criança no modelo de exibição pai, passando e mantendo uma referência ao modelo de exibição pai. Dessa forma, você pode fazer referência a qualquer propriedade do modelo de visualização pai do modelo de visualização da criança e se vincular à visualização da criança.

Outras dicas

Se você está simplesmente tentando passar dados de uma propriedade de dependência para o seu modelo de visualização, eu usaria o evento PropertyChangedCallback. Adicione um manipulador que envia os dados alterados ao seu modelo de visualização. Eu posso estar entendendo mal sua intenção.

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