2013-06-05 94 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

感谢您的回应 - 我想出了我的问题:出于某种原因,将我的元素从我的控制模板移动到