残念ながら、イベントアグリゲータは、1つのパラメータを渡すように設定されています。ただし、そのパラメータははクラスまたは構造体であることができます。
ここでは、コールバックパラメータを含む、イベントアグリゲータで渡す「メッセージ」の例を示します。
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 */ } });
ペイロード不変、または 'struct'を行うことが賢明だろう、またはあなたがそれを受け取る前にペイロードをいじっ別の加入者を危険にさらします。 – Mark