我为Android创建了一个更容易使用MVVM模式的库。
在我的库中,我有一个特殊的ViewManager
类负责解析给定视图模型的适当视图。让我举个例子:
ViewManager.register(ViewModel.class, View.class); // ViewModel will be now presented by View.
// Now when, for example, tabbed view item will be "new ViewModel()"; it will automatically be presented by View.class
在WPF中实现这一目标的正确方法是什么,所以如果我将TabControl
项目绑定到视图模型集合,它会自动解析相应的视图以从我的ViewManager
显示它们?
答案 0 :(得分:1)
您不需要任何代码在WPF中执行此操作...您可以通过在DataTemplate
文件中声明App.xaml
来简单轻松地执行此操作:
<DataTemplate DataType="{x:Type YourViewModelsPrefix:YourViewModel">
<YourViewsPrefix:YourView />
</DataTemplate>
<DataTemplate DataType="{x:Type YourViewModelsPrefix:YourOtherViewModel">
<YourViewsPrefix:YourOtherView />
</DataTemplate>
<DataTemplate DataType="{x:Type YourViewModelsPrefix:AnotherViewModel">
<YourViewsPrefix:AnotherView />
</DataTemplate>
现在,只要Framework遇到这些视图模型类的实例,它就会呈现关联的视图。您可以使用ContentControl
这样的属性来显示它们:
<ContentControl Content="{Binding YourViewModelProperty}" />