Wpf 如何在PRISM CompositePresentationEvent的发布服务器上调用回调操作?

Wpf 如何在PRISM CompositePresentationEvent的发布服务器上调用回调操作?,wpf,prism,eventaggregator,Wpf,Prism,Eventaggregator,在订阅者处理PRISM CompositePresentationEvent后,是否可以对其发布者调用回调操作?如果是,我怎么做 以下是示例场景: 主页 左控件 右控制 LeftControl发布一个事件,RightControl子脚本对该事件执行操作。右控件中的操作完成后,我想执行另一个函数来刷新左控件。不可能这样做。但是,您可以为负载创建一个类,其中包含一个委托。然后可以从订阅CompositePresentationEvent的方法中执行委托 public class Payload

在订阅者处理PRISM CompositePresentationEvent后,是否可以对其发布者调用回调操作?如果是,我怎么做

以下是示例场景:

  • 主页
  • 左控件
  • 右控制

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的情况下,我们重新考虑了我们的设计以满足我们的需求。但是回调的有效负载在我的示例中确实起作用。谢谢你的时间。好的!不客气。