当属性和数据值为true时,WPF触发

时间:2010-05-27 14:08:21

标签: c# wpf triggers datatrigger multidatatrigger

当属性和数据值为true时,我需要能够更改控件的Style。例如,我的绑定数据具有IsDirty属性。当IsDirty为真且控件被选中时,我想更改控件的背景颜色。我找到了MultiTriggerMultiDataTrigger类......但在这种情况下,我需要以某种方式触发数据和属性。我怎么能这样做?

另一个注意事项:我需要能够在XAML后面的代码中执行此操作。

2 个答案:

答案 0 :(得分:11)

MultiDataTrigger与DependencyProperties一样,也适用于普通属性。只需将绑定中的Path设置为依赖项属性的名称即可。

您需要注意设置该绑定的源代码,因为默认情况下,source是触发器附加到的元素的DataContext。如果触发器在可选对象的样式中使用,则可以使用Binding的RelativeSource属性:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
      <Condition Binding="{Binding Path=IsDirty}" Value="True" />
      <Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Self}}" Value="True" />
    </MultiDataTrigger.Conditions>
    <Setter Property="Background" Value="Cyan" />
  </MultiDataTrigger>

答案 1 :(得分:0)

以下是我在代码隐藏中实际执行的操作:

new MultiDataTrigger
{
    Conditions = 
    {
        new Condition
        {
            Binding = new Binding("IsDirty"),
            Value = true
        },
        new Condition
        {                                                    
            Binding = new Binding("IsSelected") { RelativeSource = RelativeSource.Self },
            Value = true
        }
    },

    Setters =
    {
        new Setter
        {
            Property = Control.BackgroundProperty,
            Value = Brushes.Pink
        }
    }
}