Wpf 如何在PRISM CompositePresentationEvent的发布服务器上调用回调操作?
在订阅者处理PRISM CompositePresentationEvent后,是否可以对其发布者调用回调操作?如果是,我怎么做 以下是示例场景:Wpf 如何在PRISM CompositePresentationEvent的发布服务器上调用回调操作?,wpf,prism,eventaggregator,Wpf,Prism,Eventaggregator,在订阅者处理PRISM CompositePresentationEvent后,是否可以对其发布者调用回调操作?如果是,我怎么做 以下是示例场景: 主页 左控件 右控制 LeftControl发布一个事件,RightControl子脚本对该事件执行操作。右控件中的操作完成后,我想执行另一个函数来刷新左控件。不可能这样做。但是,您可以为负载创建一个类,其中包含一个委托。然后可以从订阅CompositePresentationEvent的方法中执行委托 public class Payload
- 主页
- 左控件
- 右控制
LeftControl发布一个事件,RightControl子脚本对该事件执行操作。右控件中的操作完成后,我想执行另一个函数来刷新左控件。不可能这样做。但是,您可以为负载创建一个类,其中包含一个委托。然后可以从订阅CompositePresentationEvent的方法中执行委托
public class Payload
{
// Whatever you need here
...
public delegate void CallbackHandler();
public CallbackHandler Callback { get; private set; }
public Payload(CallbackHandler callback)
{
Callback = callback;
}
}
在发布服务器中创建有效负载:
var p = new Payload(SomeVoidFunctionOnPublisher);
然后,在处理订阅服务器中的事件后,引发回调:
public void HandleEvent(Payload p)
{
// Do something first
// Then callback
p.Callback();
}
备注:
CompositePresentationEvents背后的主要思想是组件之间的解耦,这在某种程度上受到回调的破坏,至少在概念上是这样。考虑重新构建底层架构,避免完全需要回调。或者,考虑一下“回拨”用户提出的第二个事件是否合理。谢谢。让我试试。它对你有用吗?你好,马克,我们在LeftControl中使用了常规的.NET事件。此事件由主页监视。在触发事件时,我们调用RightControl的viewmodel方法。在没有eventaggregator的情况下,我们重新考虑了我们的设计以满足我们的需求。但是回调的有效负载在我的示例中确实起作用。谢谢你的时间。好的!不客气。