使用 Prism EventAggregator。
1.制作您要发布的活动
public class CloseTabEvent : PubSubEvent<TPayload>
{
}
TPayload 是您传递的类型(int, string, or even class object)
2. 在您的关闭按钮所在的子视图中,发布该事件。
在您的关闭按钮命令(执行方法)中,您发布该事件。
private void OnCloseExecuted(object obj)
{
_eventAggregator.GetEvent<CloseTabEvent>().Publish(SomethingThatYouPublis..ThisIsTPayload);
}
在您的 subView 构造函数中传递 IEventAggregator 并创建一个私有字段。
private IEventAggregator _eventAggregator;
public SubViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
}
3. 在您的 mainViewModel 中,您还可以传递 IEventAggregator 并在构造函数中订阅。
public MainViewModel((IEventAggregator eventAggregator)
{
eventAggregator.GetEvent<CloseTabEvent>
().Subscribe(MethodForClosingThatSpecificTab);
}
就是这样。
重要提示:当使用一些 IoC(Unity, Autofac..) 解析 IEventAggregator 时,使其成为单例,因此它适用于整个应用程序。