【问题标题】:How to connect ViewModels to their appropriate Views dynamically?如何动态地将 ViewModel 连接到其适当的 View?
【发布时间】:2009-06-22 16:45:24
【问题描述】:

我有一个 WPF 应用程序,它有一个 MainView.xaml 窗口,它在运行时加载 许多页面对象,将它们加载到 ViewModels 中,并且在菜单中动态显示

我的 MainViewModel 具有 ViewModelsObservableCollection,我将它们分别绑定到 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”或“Container”应该做的事情,将 View 连接到 ViewModel 吗?我读到以上是匹配 MVVM 模式中的 ViewModel 和 View 的常用方法,但对我来说它是bit static。如有任何想法,将不胜感激。

【问题讨论】:

标签: wpf xaml mvvm


【解决方案1】:

另一种选择是使用一个类来根据某个键解析 ViewModel。然后,您可以在主视图中使用它来为您的控件解析正确的视图模型。

public static class ViewModelFactory
{
 public ViewModelBase Create(string someKeyHere)
 {
    //Some logic to resolve a view model
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2015-03-10
    • 2012-06-20
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多