CompositePresentationEvent<>的多个参数在棱镜中

时间:2012-02-20 20:04:59

标签: c# events prism

我想知道如何将两个或多个参数传递给Prism事件聚合器(事件类继承CompositePresentationEvent)?

我知道我可以创建像EventArgs这样的包装类,并为我需要的每个值创建属性,但我宁愿传递两个不同的参数。

这可能吗?

1 个答案:

答案 0 :(得分:3)

不幸的是,事件聚合器仅设置为传递单个参数。但是,该参数可以是一个类或结构。

以下是我使用事件聚合器传递的“消息”示例,包括回调参数。

public class OpenViewPayload
{
    public string ViewName;
    public object Context;
    public Action callback;
}

[Export]
[PartCreationPolicy(CreationPolicy.Shared)]
public class OpenViewEvent : CompositePresentationEvent<OpenViewPayload>
{
}

用法:

 _eventAggregator.GetEvent<OpenViewEvent>().Publish(new OpenViewPayload() { ViewName = "CustomerView", Context = _selectedCustomerID, callback= ()=> { /* Close Current View */ } });