Caliburn.Micro 具有多个实例的 EventAggregator
Caliburn.Micro EventAggregator with multiple instances
我有两个 Caliburn.Micro ViewModels 通过 EventAggregator 相互通信:
public class LeftViewModel
{
// ...
public void DoInRight()
{
messanger.PublishOnUIThread(new DoInRightMessage());
}
}
public class RightViewModel : IHandle<DoInRightMessage>
{
public void Handle(DoInRightMessage e)
{
// ...
}
}
在屏幕上只有一个 LeftViewModel
和 RighViewModel
实例之前,它一直运行良好。但现在我想允许任意数量的实例 - 总是成对出现。所以 LeftViewModel.DoInRight()
应该只在一个 RighViewModel
中发送消息(一对中的一个),而不是所有 RighViewModel
个实例。
2015 年 7 月 8 日更新:
如何解决这种配对消息:
- 某种消息 channels/groups 通过在消息中添加参数
target
或 id
(感谢 @jophy job
指出我的想法)。
- 有多个 EventAggregator。
- 放弃EventAggregator,直接调用方法。
- 或任何其他解决方案?
您可以尝试为每个视图使用某种 ID。
有一个类似的问题Caliburn.Micro and event aggregator -unwanted call handle method
我有两个 Caliburn.Micro ViewModels 通过 EventAggregator 相互通信:
public class LeftViewModel
{
// ...
public void DoInRight()
{
messanger.PublishOnUIThread(new DoInRightMessage());
}
}
public class RightViewModel : IHandle<DoInRightMessage>
{
public void Handle(DoInRightMessage e)
{
// ...
}
}
在屏幕上只有一个 LeftViewModel
和 RighViewModel
实例之前,它一直运行良好。但现在我想允许任意数量的实例 - 总是成对出现。所以 LeftViewModel.DoInRight()
应该只在一个 RighViewModel
中发送消息(一对中的一个),而不是所有 RighViewModel
个实例。
2015 年 7 月 8 日更新: 如何解决这种配对消息:
- 某种消息 channels/groups 通过在消息中添加参数
target
或id
(感谢@jophy job
指出我的想法)。 - 有多个 EventAggregator。
- 放弃EventAggregator,直接调用方法。
- 或任何其他解决方案?
您可以尝试为每个视图使用某种 ID。
有一个类似的问题Caliburn.Micro and event aggregator -unwanted call handle method