2013-06-05 87 views
2

MultiDataTrigger看起來是這樣的:兩個MultiDataTrigger一個按鈕

<Style x:Key="btnStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseBtnStyle}"> 
    <Setter Property="UIElement.IsEnabled" Value="False" /> 
    <Setter Property="Margin" Value="3,2"/> 
    <Setter Property="Template" Value="{DynamicResource GrayButtonTemplate}"/> 

    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding Num}" Value="1"/> 
       <Condition Binding="{Binding Str}" Value="aaa"/> 
      </MultiDataTrigger.Conditions> 

      <Setter Property="UIElement.IsEnabled" Value="True" /> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style> 

的目標是,該按鈕會盡快= 1

它可以被啓用爲海峽= AAA和Num。

的問題是,我想要的按鈕將被激活即使民= 2(和STR = AAA)

我嘗試的第一個後,添加更多MultiDataTrigger

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding Num}" Value="2"/> 
     <Condition Binding="{Binding Str}" Value="aaa"/> 
    </MultiDataTrigger.Conditions> 

    <Setter Property="UIElement.IsEnabled" Value="True" /> 
</MultiDataTrigger> 

他沒有提到它,該按鈕僅在Num = 1時啓用。

還有另一種方法可以做到這一點嗎?

回答

2

我能看到的最簡單的方法是在你的對象,你在你的Style

<Setter Property="IsEnabled" Value="{Binding Path=IsEnabled}"/> 

,每當StrStrNum

public bool IsEnabled 
{ 
    get 
    { 
     return (Num == 1 || Num == 2) && Str == "aaa"; 
    } 
} 

綁定IsEnabled創建IsEnabled財產或Num變更通知約IsEnabled c更換爲

+0

問題中的XAML的實際問題是什麼?是否有可能有多個MultiDataTrigger?我有一個類似的問題,但創建一個通知程序屬性不是我的選擇。 – Sherlock

+1

@Sherlock你可以根據自己的喜好('Trigger','DataTrigger',...)選擇你想要的'Triggers',並且我不知道爲什麼在這種特殊情況下它沒有像在我的代碼,它只是它工作正常。這只是一種方式,允許您在「ViewModel」中創建乾淨的解決方案,以便您的情況更加複雜。 – dkozl

+0

感謝您的迴應 - 我想出了我的問題:出於某種原因,將我的元素從我的控制模板移動到