如何在PRISM CompositePresentationEvent的发布者上调用Callback操作?

时间:2013-03-05 18:59:40

标签: wpf prism eventaggregator

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

以下是示例方案:

  • 的MainPage
  • LeftControl
  • RightControl

LeftControl发布一个Event和RightControl子目录来对事件采取行动。完成右侧控件中的操作后,我想执行另一个函数来刷新左侧控件。

1 个答案:

答案 0 :(得分:1)

没有内置的可能性。但是,您可以为有效负载创建一个包含委托的类。然后,您可以从订阅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背后的主要思想是组件之间的分离,这种方式受到回调的破坏,至少在概念上是这样。考虑重新设计底层架构,以避免完全回调。或者考虑一下,“回调”用户提出的第二个事件是否合理。