从模型创建 UserControl - 在 UserControl 之间共享 ViewModel 属性
Create a UserControl from a Model - Share ViewModel Property between UserControl
我创建了一个封装了两个UserControl的UserControl。
第一个是可以由用户更改的 "model"。它表示 TextBox 的 ObservableCollection。每一项都由用户填写。
我的第二个 UserControl 将是一个 UserControl 列表。
每个子 UserControl 将是一个文本框列表。
我希望能够使用第一个 UserControl 的信息创建我的第二个 UserControl ==> 文本框工具提示中使用的每个文本框中的文本。
所以我想要的是当用户在第一个用户控件中添加一个字段时能够在我的第二个用户控件的每个项目中添加相同的字段。
黑色矩形代表我的模型,红色矩形代表我的第二个用户控件所以使用我的模型创建一个用户控件。
每个 UserControl 拥有自己的 ViewModel。
提前致谢。
您好,请尝试下一个架构:
- 第一个用户控件可观察集合。 ObservableCollection 支持在项目为 added/deleted/etc 时引发的事件。在您的第一个用户控件视图模型中提交此事件。
- 第二个用户控件让它的视图模型由 ObservableCollections 组成。
- 在控件的视图模型之间共享 EventAggregator (link here)。第一个用户控件视图模型将是发布者,第二个将是订阅者。
- 每次第一个用户控件视图模型的可观察集合将被更改时,发布聚合器事件以通知此集合已更改的事实。
- 第二个用户控件将获取事件并对其所有集合执行操作 (add/delete)。
更新
您可以管理共享机制,使 EventAggregator 成为相同的引用,但发布的对象将有一个代表特定选项卡的键(例如选项卡的哈希码),因此每个订阅者都会知道是否必须回应
就是这样。尝试执行此操作,如果您对代码有疑问,我将很乐意提供帮助。
此致。
我创建了一个封装了两个UserControl的UserControl。 第一个是可以由用户更改的 "model"。它表示 TextBox 的 ObservableCollection。每一项都由用户填写。
我的第二个 UserControl 将是一个 UserControl 列表。 每个子 UserControl 将是一个文本框列表。 我希望能够使用第一个 UserControl 的信息创建我的第二个 UserControl ==> 文本框工具提示中使用的每个文本框中的文本。
所以我想要的是当用户在第一个用户控件中添加一个字段时能够在我的第二个用户控件的每个项目中添加相同的字段。
黑色矩形代表我的模型,红色矩形代表我的第二个用户控件所以使用我的模型创建一个用户控件。
每个 UserControl 拥有自己的 ViewModel。
提前致谢。
您好,请尝试下一个架构:
- 第一个用户控件可观察集合。 ObservableCollection 支持在项目为 added/deleted/etc 时引发的事件。在您的第一个用户控件视图模型中提交此事件。
- 第二个用户控件让它的视图模型由 ObservableCollections 组成。
- 在控件的视图模型之间共享 EventAggregator (link here)。第一个用户控件视图模型将是发布者,第二个将是订阅者。
- 每次第一个用户控件视图模型的可观察集合将被更改时,发布聚合器事件以通知此集合已更改的事实。
- 第二个用户控件将获取事件并对其所有集合执行操作 (add/delete)。
更新
您可以管理共享机制,使 EventAggregator 成为相同的引用,但发布的对象将有一个代表特定选项卡的键(例如选项卡的哈希码),因此每个订阅者都会知道是否必须回应
就是这样。尝试执行此操作,如果您对代码有疑问,我将很乐意提供帮助。
此致。