我有一个WPF应用程序,它有一个 MainView.xaml 窗口,可以在运行时加载众多页面对象,将它们加载到 ViewModels 中,在菜单中动态显示。
我的MainViewModel有一个 ObservableCollection ViewModels ,我将它们绑定到MainView.xaml文件中相应的 Views 。
但是,有没有办法自动化这样我每次添加页面时都不必进行这些手动输入?
<Window.Resources>
<DataTemplate DataType="{x:Type vm:PageItemManageCustomersViewModel}">
<v:PageItemManageCustomersView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:PageItemManageEmployeesViewModel}">
<v:PageItemManageEmployeesView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:PageItemReportsViewModel}">
<v:PageItemReportsView/>
</DataTemplate>
</Window.Resources>
这不是“ ServiceLocator ”或“容器”应该做的事情,将视图连接到ViewModels?我已经读过上面的内容是常用的方式来匹配MVVM模式中的ViewModel和Views,但它对我来说是一个 bit static 。非常感谢任何想法。
答案 0 :(得分:-1)
另一种选择是使用类根据某些键解析ViewModels。然后,您可以在主视图中使用它来解析控件的正确视图模型。
public static class ViewModelFactory
{
public ViewModelBase Create(string someKeyHere)
{
//Some logic to resolve a view model
}
}