2012-02-20 9 views
3

プリズムイベントアグリゲータ(イベントクラスはCompositePresentationEventを継承します)に複数のパラメータを渡す方法を知りたいですか?プリズムのCompositePresentationEvent <>を使用した複数のパラメータ

私はEventArgsのようなラッパークラスを作成し、必要な値ごとにプロパティを作成できますが、2つの異なるパラメータを渡すことをお勧めします。

これは可能ですか?

答えて

3

残念ながら、イベントアグリゲータは、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 */ } }); 
+0

ペイロード不変、または 'struct'を行うことが賢明だろう、またはあなたがそれを受け取る前にペイロードをいじっ別の加入者を危険にさらします。 – Mark

関連する問題