Question

J'ai une vue parent qui définit une vue enfant dans Xaml. La vue enfant a un DependencyProperty lié ??au ViewModel de la vue parent. Cependant, cette valeur est également requise par le ViewModel de la vue enfant.

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

ChildId est implémenté en tant que propriété de dépendance du contrôle ChildView . Si ChildViewModel a besoin de ParentFooId , quelle est la méthode MVVM appropriée pour l'obtenir?

Je ne souhaite pas convertir le DataContext du ChildView en un ChildViewModel et définir une valeur dans un OnChildIdChanged gestionnaire de ChildView . Cela ne me semble pas très MVVM.

L’autre solution envisageable a été de créer un nouveau ChildViewModel avec la valeur et de le définir comme DataContext dans l’événement OnParentFooIdChanged ( dans le ParentViewModel ); mais cela ne semble pas tout à fait correct non plus, car les modèles ViewModels sont supposés être inconscients de la vue (et ne connaissent donc rien des DataContext s).

Il semble que je manque quelque chose d'évident ...

Était-ce utile?

La solution

Si je comprends bien la question, il vous suffit de créer le modèle de vue enfant dans le modèle de vue parent, en passant et en conservant une référence au modèle de vue parent. De cette façon, vous pouvez référencer toute propriété du modèle de vue parent à partir du modèle de vue enfant et y associer l'une ou l'autre.

Autres conseils

Si vous essayez simplement de transmettre des données d'une propriété de dépendance à votre modèle de vue, j'utiliserais l'événement PropertyChangedCallback. Ajoutez un gestionnaire qui envoie les données modifiées à votre modèle de vue. Je peux toutefois mal comprendre votre intention.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top