2

サブスクライバーによって処理された後、PRISM CompositePresentationEvent のパブリッシャーでコールバック アクションを呼び出すことは可能ですか? はいの場合、どうすればできますか?

シナリオの例を次に示します。

  • メインページ
  • 左コントロール
  • 右コントロール

LeftControl は Event を発行し、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 の背後にある主なアイデアは、コンポーネント間の分離です。これは、少なくとも概念的な意味では、コールバックによって弱められています。コールバックの必要性を完全に回避するために、基礎となるアーキテクチャを作り直すことを検討してください。あるいは、「コールバック」サブスクライバーによって発生した 2 番目のイベントが正当化されるかどうかを考えてみてください。

于 2013-03-05T20:08:18.313 に答える