Мне нужно выяснить, как взаимодействовать между 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 представления как исходную модель представления, которая вызвала выбор DataTemplate?
Очевидное исправление - объединить свойства из ChildViewModel в ParentViewModel, но я бы предпочел разделить их, потому что для повторного использования.
Я уверен, что ответ банален, я просто хотел бы знать, что это такое. :)
Заранее спасибо.