2012-01-12 19 views
0

MouseLeftButtonUpイベントを取得したSilverlight UserControlがあります。 xamlでは、このイベントに対して2つのトリガーを追加します。 Silverlight xaml-parserがこれらのトリガーを解析してアタッチする順序で、上記のトリガーが最初に呼び出されることを確認できますか?Silverlight。トリガーの呼び出し順序

... 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="MouseLeftButtonUp"> 
     <i:InvokeCommandAction Command="{StaticResource someCommand}"/> 
     <AttachedBehaviors:SomeBehavior Parameter="Apple"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
... 


UPDATE:見つかり接続問題 In WPF, does the order of Triggers matter?言う:

WPFは、宣言された順序でトリガを処理しています。

希望すると、Silverlightはまったく同じように動作します。

+0

あなたのコードを実行して自分自身を見つけ出すのはなぜですか? – ColinE

+0

@ColinEこれは期待通りに機能します。しかし、私は奇妙なパーサーの動作に関する記事を読んでいます(私はそれを見つけるとすぐに質問にリンクをつけます)、私は専門家の考えを得たいと思っています。 –

答えて

2

オーダーが定義されていても、私はこれをしません。コマンドのハンドラに必要な順序を追加します。

void someCommand_Executed() 
{ 
    DoFirstThing(); 
    DoSecondThing(); 
} 

注文が簡単に施行されていない、あなたは2つの方法の間の依存関係を作成しているので、この種のコードは、長期的には痛みの原因となります。

+0

アドバイスありがとうございます。しかし、私の場合、最初に 'ViewModel'(いくつかの変更を行う - データを保存する:' someCommand')でいくつかの変更を行い、以前に行われた変更に関して 'Layout'を更新するいくつかの動作を呼び出したいと思います。 –

+0

しないでください。ビューをViewModelにバインドすると、ViewModelの変更がビューに自動的に反映されます。 –

+0

それは縛られ、うまくいきます。私は特定のケースを持っており、それはデータ提示ではありません。 「レイアウトの更新」では、Viewを全く変更しています(別のコントロールを読み込み、他のものを隠すなど)、ViewModelに依存しません。 –

関連する問題