2

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

这是示例场景:

  • 主页
  • 左控制
  • 右控制

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

4

1 回答 1

2

没有内置的可能性这样做。但是,您可以为您的有效负载创建一个类,其中包含一个委托。然后,您可以从订阅了 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 背后的主要思想是组件之间的解耦,这在某种程度上被回调所破坏,至少在概念上是这样。考虑重新设计您的底层架构,以避免完全需要回调。或者考虑一下,由“回调”订阅者引发的第二个事件是否合理。

于 2013-03-05T20:08:18.313 回答