【问题标题】:MVVM scenario with main window and many user controls具有主窗口和许多用户控件的 MVVM 场景
【发布时间】:2010-05-06 10:12:41
【问题描述】:

我有一个主窗口和许多想要根据用户选择显示/隐藏的用户控件。例如,有一个名为 Customer 的用户控件应该从数据库中获取所有客户,或者有一个用户控件是注册服务的表单。等等。这些控件中的每一个都有应从数据库中获取数据的视图模型。问题是我不知道以正确的方式设置数据上下文。为了简单起见,我的模型是一个 ado.net 实体数据模型。

我试过了:

<UserControl.DataContext>
<vm:CustomerViewModel/>
</UserControl.DataContext>

我将字段绑定到模型字段,但没有数据可见。在我使用 MainWindowViewModel 中的方法并将 viewmodel 设置为 App.xaml.cs 中的视图并调用该方法之前:

Views.MainWindow newMainV = new Views.MainWindow();
ViewModels.MainVM mainVM = new ViewModels.MainVM();
mainVM.LoadCustomers();
newMainV.DataContext = mainVM;
newMainV.Show();

但我认为主窗口应该有自己的视图模型,只处理命令,每个用户控件都应该有自己的视图模型,可以获取所需的数据。

我的方法有什么问题?

感谢您的帮助。

【问题讨论】:

    标签: wpf mvvm binding


    【解决方案1】:

    原则上,按照您描述的方式在UserControl 上设置DataContext 没有任何问题。所以我怀疑你的绑定是如何设置的,或者你的视图模型的构造函数是如何工作的。您应该在输出窗口中查看绑定错误并在构造函数中放置一个断点,以查看当您的 UserControl 被实例化时实际发生了什么。

    【讨论】:

      【解决方案2】:

      您可以查看 WPF Application Framework (WAF) 的 BookLibrary 示例应用程序。

      此 MVVM 示例应用程序也使用实体框架数据模型,它由各种视图 (UserControl) 组成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多