XAML:
<ItemsControl ItemsSource="{Binding Messages}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Views:Message110FirstView DataContext="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
视图模型:
public ObservableCollection<ViewModelBase> Messages
{
get { return GetValue<ObservableCollection<ViewModelBase>>(MessagesProperty); }
set { SetValue(MessagesProperty, value); }
}
public static readonly PropertyData MessagesProperty = RegisterProperty("Messages", typeof(ObservableCollection<ViewModelBase>), null);
我的问题与xaml的这一部分有关:
<Views:Message110FirstView DataContext="{Binding}"/>
那么,如何在这个地方制作不同的观点。
谢谢。
答案 0 :(得分:1)
如果我理解正确,那么您需要基于viewmodel的更改视图。
如果您想根据DataTemplates
动态切换Views
,则可以使用ViewModel
:
<Window>
<Window.Resources>
<DataTemplate DataType="{x:Type ViewModelA}">
<localControls:ViewAUserControl/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModelB}">
<localControls:ViewBUserControl/>
</DataTemplate>
<Window.Resources>
<ContentPresenter Content="{Binding CurrentView}"/>
</Window>
如果Window.DataContext
是ViewModelA
的实例,则会显示ViewA
,Window.DataContext
是ViewModelB
的实例,然后是ViewB
将会显示。
我见过的最好的例子是Rachel Lim. See the example.