WPF:Unity IoC + Prism
WPF: Unity IoC + Prism
我不明白如何在 Prism 中正确使用区域。例如,我有一个应用程序:
Structure of my app
我只有一个 ShellView (window) 和 ShellViewModel 作为 DataContext(但这并不重要)。我的问题是 OrderView(每个 OrderView 都是单独的 window),它在几个区域(例如:Region1、Region2、Region3)上拆分。对于每个区域,我通过模块 (IModule) 注入来使用 UserControl, 但我不明白我应该如何使用绑定 。
我有几个变体:
- 为每个区域使用单独的视图模型
- 对视图使用一个视图模型并按区域使用它(我认为这是最简单的方法,但不正确,因为区域将与此视图模型紧密链接)
- 或其他
对于变体 1:
我通过特殊服务创建 OrderView(来自服务的代码示例):
OrderView view = IoCHelper.Resolve<OrderView>();
OrderViewModel ovm = view.DataContext as OrderViewModel; //(or using special property for that: view.ViewModel)
ovm.Data1 = ...;
ovm.Data2 = ...;
view.Show();
我不明白如何为区域发送其他视图模型
我的问题是我不知道如何正确地将数据从 OrderViewModel 传输到区域(没有将区域的控件强链接到此视图模型(因为该控件可用于应用程序的其他部分)其他视图模型))
(抱歉我的英语有时不正确)
我认为区域在这种情况下不会很好地工作。
您应该提供自己的注册表,每个模块在其中注册其订单组件,即创建其实例的工厂。此外,添加一个数据模板以在显示订单组件时使用。
然后,在创建要在新订单视图中显示的订单视图模型时(不是反过来!),查看注册表并创建所有组件并将它们添加到订单视图模型。然后,订单视图将从其订单视图模型中获取这些组件并显示它们,应用为其注册的各自模块的数据模板。
我不明白如何在 Prism 中正确使用区域。例如,我有一个应用程序: Structure of my app 我只有一个 ShellView (window) 和 ShellViewModel 作为 DataContext(但这并不重要)。我的问题是 OrderView(每个 OrderView 都是单独的 window),它在几个区域(例如:Region1、Region2、Region3)上拆分。对于每个区域,我通过模块 (IModule) 注入来使用 UserControl, 但我不明白我应该如何使用绑定 。
我有几个变体:
- 为每个区域使用单独的视图模型
- 对视图使用一个视图模型并按区域使用它(我认为这是最简单的方法,但不正确,因为区域将与此视图模型紧密链接)
- 或其他
对于变体 1: 我通过特殊服务创建 OrderView(来自服务的代码示例):
OrderView view = IoCHelper.Resolve<OrderView>();
OrderViewModel ovm = view.DataContext as OrderViewModel; //(or using special property for that: view.ViewModel)
ovm.Data1 = ...;
ovm.Data2 = ...;
view.Show();
我不明白如何为区域发送其他视图模型
我的问题是我不知道如何正确地将数据从 OrderViewModel 传输到区域(没有将区域的控件强链接到此视图模型(因为该控件可用于应用程序的其他部分)其他视图模型))
(抱歉我的英语有时不正确)
我认为区域在这种情况下不会很好地工作。
您应该提供自己的注册表,每个模块在其中注册其订单组件,即创建其实例的工厂。此外,添加一个数据模板以在显示订单组件时使用。
然后,在创建要在新订单视图中显示的订单视图模型时(不是反过来!),查看注册表并创建所有组件并将它们添加到订单视图模型。然后,订单视图将从其订单视图模型中获取这些组件并显示它们,应用为其注册的各自模块的数据模板。