Мне нужно выяснить, как общаться между ViewModels. Я новичок в MVVM, поэтому будьте добры.
Вот глупый пример
определения классов (предположим, что я перехватил событие Child.PropertyChanged в 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");
}
}
}
Вот что вы видите в словаре ресурсов
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
и код для ChildView:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Очевидная проблема заключается в том, что, когда экземпляр ChildView создается (посредством выбора из DataTemplate), он создает новый класс ChildViewModel, а ParentViewModel не имеет к нему доступа.
Так, как я могу создать экземпляр DataContext для View, чтобы он был исходным ViewModel, который вызвал выбор DataTemplate?
Очевидным решением является объединение свойств в ChildViewModel с ParentViewModel, но я бы предпочел разделить его, потому что для повторного использования.
Я уверен, что ответ тривиален, я просто хотел бы знать, что это такое. :)
Заранее спасибо.