如何通知多个视图模型变量更改



我的一个视图包含一个下拉菜单。进行选择时,必须使其视图模型和程序中的所有其他视图模型知道更改,以便它们可以更新其视图。目前,每个视图模型都包含自己的选择副本,当它被更改时,我有手动更新它们(我在每个上面都有一个公共刷新(int newVal)。有没有更好的方法

一种可能的方法可能是使用事件聚合器。聚合器用于在发布者和接收方之间调度消息。

需要发送消息的对象向EventAggregator注册消息类型,需要接收的对象也在EventAggregator订阅它们。

有很多方法可以实现这一点,我建议使用您选择的任何 MVVM 框架。最常见的框架都提供了经过时间验证的实现。

一个例子是Caliburn Micro。CM框架已经为此提供了EventAgregator类。

请参阅此处的示例:使用 Caliburn.Micro 的 EventAggregator 进行消息传递简介。

您可以使用

事件聚合器并通过它发布一个事件,该事件可以由每个视图模型处理(也许在某种基类中?)。

使用(聚合)事件。

在加载视图时订阅事件,在卸载视图时

取消订阅,并确保在加载视图模型时初始化视图模型中的变量。然后在选择更改时发布事件(将新数据作为参数传递)。

相关内容

  • 没有找到相关文章

最新更新