【发布时间】:2012-06-12 08:46:04
【问题描述】:
我有一个 WPF Prism 应用程序,例如我要编辑的几个客户。因此,例如,我有 5 个标签供 5 个客户使用。 每个客户都有 5 个子选项卡,例如设置、详细信息等。
当我加载或更新客户时,我希望发布到每个子选项卡的 prism 事件得到更新。 唯一的问题是:其他子选项卡也将与同一客户一起更新......这不是计划:D
那么是否有可能只有活动选项卡和那些视图模型可以订阅事件,或者类似的东西?
感谢您的帮助!
【问题讨论】:
我有一个 WPF Prism 应用程序,例如我要编辑的几个客户。因此,例如,我有 5 个标签供 5 个客户使用。 每个客户都有 5 个子选项卡,例如设置、详细信息等。
当我加载或更新客户时,我希望发布到每个子选项卡的 prism 事件得到更新。 唯一的问题是:其他子选项卡也将与同一客户一起更新......这不是计划:D
那么是否有可能只有活动选项卡和那些视图模型可以订阅事件,或者类似的东西?
感谢您的帮助!
【问题讨论】:
不久前我做过类似的事情
我不记得确切的细节,但是标签订阅了带有LoadConsumerMessage 的事件,并且消息除了通常的消息属性之外还有两个额外的属性:Id 字段和IsHandled 字段。
如果我想要一个特定的标签来加载消费者,我会用我想要的标签的 ID 填充 Id。例如,要在当前选项卡中加载客户,我会使用
// Id was typically a Guid
var event = new LoadConsumerEvent() { Id = this.Id; };
然后在处理事件的订阅者中,如果事件不匹配,我会忽略它
if (e.Id == Guid.Empty || e.Id == this.Id)
{
// Load Customer
}
如果我只希望第一个可用选项卡来处理事件,我会在第一个订阅者中设置 IsHandled 属性,如果该事件为真则忽略该事件
if (e.IsHandled)
return;
// Do processing
e.IsHandled = true;
【讨论】: