Ho bisogno di capire come comunicare tra ViewModels. Sono nuovo di MVVM quindi per favore sii gentile.MVVM Pattern, ViewModel DataContext domanda
Ecco un esempio instupiditi
definizioni di classe (si presuppone che ho agganciato l'evento Child.PropertyChanged nel ParentViewModel):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
Ecco cosa si vede nel dizionario risorse
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
e il code-behind di ChildView:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Il problema ovvio è che quando ChildView viene istanziato (tramite selezione dal DataTemplate) crea una nuova classe ChildViewModel e il ParentViewModel non ha accesso ad esso.
Quindi, come è possibile creare un'istanza del DataContext della vista come ViewModel originale che ha causato la selezione del DataTemplate?
Una correzione ovvia è di mmerge le proprietà in ChildViewModel nel ParentViewModel, ma preferisco separarlo perché per il riutilizzo.
Sono sicuro che la risposta è banale, vorrei solo sapere di cosa si tratta. :)
Grazie in anticipo.
A proposito, suppongo che abbiate modificato i nomi delle classi per semplificare l'esempio ... Il nome della classe per "ChildView" nel codice sottostante è "QueueView". –
Era un errore? –
Sì, questo era un errore di battitura. sorry :) – Jose