Обычно я создаю WPF UserControl
, ожидая, что он будет использоваться с определенной моделью представления.
Например, у меня могут быть CalendarControl
и CalendarViewModel
.CalendarControl
никогда не ссылается на CalendarViewModel
напрямую, однако он ожидает привязки к CalendarViewModel
, поэтому в привязках будут указаны свойства CalendarViewModel
В приложении WPF ParentViewModel обычно предоставляет свойствовведите CalendarViewModel
, и он отвечает за создание CalendarViewModel.Родительское представление обычно содержит код, который выглядит примерно так:
<Window.Resources>
<DataTemplate DataType="{x:Type local:CalendarViewModel}">
<local:CalendarControl />
</DataTemplate>
</Window.Resources>
...
<ContentControl Content="{Binding CalendarViewModelProperty}" />
Альтернативная (при использовании перетаскивания) разметка может выглядеть следующим образом:
<local:CalendarControl DataContext="{Binding CalendarViewModelProperty}" />