2013-03-30 63 views
2

UserControlenum類型的DP(GroupStyleeGroupStyle)和bool型(IsGrouped)的DP。我需要在所有可能的情況下開始一些故事板。但最後的MultiDataTrigger只適用。我錯在哪裏?另外我想知道是否存在一個更簡單的方法來考慮這些條件。 (檢查IsGrouped一次。)幾個MultiDataTriggers僅適用於最後一個

C#:

enum eGroupStyle 
{ 
    GroupStyle1, 
    GroupStyle2, 
    ∙∙∙, 
    GroupStyleN, 
} 

XAML:

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/> 
     <Condition Binding="{Binding IsGrouped}" Value="False"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle1}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/> 
     <Condition Binding="{Binding IsGrouped}" Value="True"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyle1}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyle2"/> 
     <Condition Binding="{Binding IsGrouped}" Value="False"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle2}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyle2"/> 
     <Condition Binding="{Binding IsGrouped}" Value="True"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyle2}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
∙∙∙ 
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyleN"/> 
     <Condition Binding="{Binding IsGrouped}" Value="False"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyleN}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding GroupStyle}" Value="GroupStyleN"/> 
     <Condition Binding="{Binding IsGrouped}" Value="True"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyleN}"/> 
    </MultiDataTrigger.EnterActions> 
</MultiDataTrigger> 
+0

任何想法?任何猜測?任何可能性? – Mimi

+0

我發現,如果MultiDataTrigger序列中的當前條件位於新條件之前,其他條件也可能工作! *例如*假設當前的「GroupStyle」設置爲GroupStyle2,在這種情況下,將GroupStyle設置爲GroupStyle3,4 ... N可行,但對於GroupStyle1不起作用。這種行爲對於次要條件是成立的。例如如果當前的'GroupStyle'設置爲GroupStyle3而IsGrouped'是Flase,則會觸發'IsGrouped'設置爲True的情況,但反之亦然!!!! – Mimi

+0

你不顯示故事板,我懷疑它們中包含的動畫可能是問題。特別是,您是否在故事板的動畫中指定了'FillBehavior =「Stop」?觸發器可能正在觸發,但動畫可能沒有任何效果。我最近回答了[類似的問題](http://stackoverflow.com/q/15657822)涉及WPF觸發器和動畫,看起來就是這種情況。 –

回答

4

我發現吧!我需要在下面的退出動作中刪除以前的故事板。現在它的作品:)

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding Path=GroupStyle}" Value="GroupStyle1"/> 
     <Condition Binding="{Binding Path=IsGrouped}" Value="False"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.EnterActions> 
     <BeginStoryboard x:Name="BeginStoryboard_TurnToUnselectedStyle1" Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle1}"/> 
    </MultiDataTrigger.EnterActions> 
    <MultiDataTrigger.ExitActions> 
     <RemoveStoryboard BeginStoryboardName="BeginStoryboard_TurnToUnselectedStyle1"/> 
    </MultiDataTrigger.ExitActions> 
</MultiDataTrigger> 
相關問題