2012-01-12 87 views
0

有一個Silverlight UserControl得到了一個MouseLeftButtonUp事件。在xaml中,我爲這個事件添加了兩個觸發器。 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 2012-01-12 11:01:03

+0

@ColinE現在它按預期工作。但是我已經閱讀了關於奇怪解析器行爲的文章(只要我會找到它 - 我會用鏈接更新問題),並且我想得到專家的想法。 – 2012-01-12 11:07:16

回答

2

即使訂單已定義,我也不會這樣做。將您想要的訂單添加到該命令的處理程序。

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

這種代碼將導致長期來看痛苦,因爲訂單不容易執行,要創建兩個方法之間的相關性。

+0

感謝您的諮詢。但在我的情況下,首先我想對'ViewModel'做一些修改(可以說 - 保存數據:'someCommand'),然後調用一些行爲,它將更新'Layout'關於先前所做的更改。 – 2012-01-12 11:11:11

+0

不要。將視圖綁定到ViewModel,並且應該將ViewModel中的傳播更改自動傳遞給View。 – 2012-01-12 11:12:16

+0

它的約束和運作良好。我有特定的情況,它不是數據呈現。在「佈局更新」下,我的意思是改變視圖(我加載另一個控件,隱藏其他幾個等),它不依賴於'ViewModel'。 – 2012-01-12 11:18:52