是否可以在订阅者处理PRISM CompositePresentationEvent的发布者后调用回调操作?如果是,我该怎么做?
以下是示例方案:
LeftControl发布一个Event和RightControl子目录来对事件采取行动。完成右侧控件中的操作后,我想执行另一个函数来刷新左侧控件。
答案 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背后的主要思想是组件之间的分离,这种方式受到回调的破坏,至少在概念上是这样。考虑重新设计底层架构,以避免完全回调。或者考虑一下,“回调”用户提出的第二个事件是否合理。