从模型创建UserControl - 在UserControl之间共享ViewModel属性

时间:2015-12-27 19:56:53

标签: c# wpf xaml mvvm user-controls

我创建了一个封装两个UserControl的UserControl。 第一个是可以由用户更改的“模型”。它表示TextBox的ObservableCollection。其中每一个都由用户填写。

我的第二个UserControl将是UserControl列表。 每个子UserControl都是一个文本框列表。 我希望能够使用第一个UserControl ==>的信息创建我的第二个UserControl。文本框工具提示中使用的每个文本框中的文本。

所以我想要的是当用户在第一个usercontrol中添加一个字段,以便能够在我的第二个UserControl的每个项目中添加相同的字段。

黑色矩形表示我的模型,红色矩形表示我的第二个usercontrol,因此使用我的模型创建UserControl。 Preview

每个UserControl都拥有他的ViewModel。

提前致谢。

1 个答案:

答案 0 :(得分:1)

嗨,请尝试下一个架构:

  1. 第一个用户控件可观察集合。 ObservableCollection支持在添加/删除项目等时引发的事件。在您的第一个用户控件视图模型中提交此事件。
  2. 第二个用户控件让其视图模型由ObservableCollections组成。
  3. 在控件的视图模型之间共享EventAggregator(链接here)。第一个用户控制视图模型将是发布者,第二个将是订阅者。
  4. 每次更改第一个用户控件视图模型的可观察集合时,都会发布聚合器事件以通知此集合已更改的事实。
  5. 第二个用户控件将获取事件并对其所有集合执行操作(添加/删除)。
  6. <强>更新

    您可以管理共享机制,以便EventAggregator将是相同的引用,但是已发布的对象将具有表示特定选项卡的键(例如选项卡的哈希代码),因此每个订阅者都将知道它是否不得不回应。

    这就是全部。尝试执行该操作,如果您对代码有疑问,我将很乐意为您提供帮助。

    问候。

相关问题