2014-08-29 51 views
0

我有一个按钮,其内容属性根据ViewModel设置的特定条件不断变化。本质上它被设置为0到1000之间的一个值。基于Content或CustomDP值设置按钮的背景

我也有另一个自定义DP属性在同一个按钮的值可以设置为某个枚举。

我所试图解决如下(可惜不知道我应该怎么去了解它):

如果我的按钮含量值是0 - 按钮的背景应该是灰色的。 如果我的按钮内容值为1 - 按钮的背景应为黄色。 如果我的按钮内容值为1 &“自定义DP”设置了一个值(而不是默认值) - 背景应该更改为“红色”。

如果我的问题陈述只是基于内容上设置的整数设置背景 - 我可以很容易地使用转换器(字符串来刷)并设置我的背景。但最后一个条件,现在设置我的背景基于自定义DP值进来 - 不知道如何解决...

有人可以请建议我一种方法 - 示例代码来解决这样的问题。

回答

1
<Button Content="0"> 
     <Button.Style> 
      <Style TargetType="Button"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Content}" Value="0"> 
         <Setter Property="Background" Value="Gray"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Content}" Value="1"> 
         <Setter Property="Background" Value="Yellow"/> 
        </DataTrigger> 
        <MultiDataTrigger> 
         <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Content}" Value="1"/> 
          <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=YourDP}" Value="YourValue"/> 
         </MultiDataTrigger.Conditions> 
         <MultiDataTrigger.Setters> 
          <Setter Property="Background" Value="Red"/> 
         </MultiDataTrigger.Setters> 
        </MultiDataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 
0

您可以使用多条件触发器或多数据触发器。看到这个link和这个link

+0

非常感谢你 – Patrick 2014-08-29 05:58:19