Je suis nouveau sur MVVM et j'ai un petit problème. J'ai deux commandes d'utilisateur: parent et enfant (avec vue, viewmodel, classes de modèle). Et besoin de passer certaines propriétés de parent à enfant. Pour l'instant ive gérés en écrivant ce code:Passage de la propriété d'une "vue" au viewmodel d'une autre vue dans MVVM
public static readonly DependencyProperty CallbackActionProperty =
DependencyProperty.Register("CallbackAction", typeof (Action),
typeof (ChildView), new PropertyMetadata(default(Action)));
public Action CallbackAction
{
get { return (Action) GetValue(CallbackActionProperty); }
set
{
SetValue(CallbackActionProperty, value);
((ChildViewModel)this.DataContext).CallbackAction = value; // Change ViewModel property too
}
}
C'est une propriété de dépendance dans ChildView
et sur son plateau, j'ai également sa propriété de ViewModel
. Après cela, j'accède à cette propriété de dépendance de ParentView
et de définir le CallbackAction
-> qui définit le CallbackAction
dans ViewModel de l'enfant.
code:
this.Loaded += (sender, args) => childUc.CallbackAction = ((ParentViewModel) this.DataContext).RefreshStatuses;
childUc
est usercontrol, situé sur le parent et représenté par ChildView
. Le code est moche, donc j'espère voir une meilleure pratique en termes de ne pas casser le modèle. Merci.
Quelle est la question? –
@Mario Vernari, quelle est la bonne façon de faire la chose que j'ai essayé de décrire. – 0x49D1