9

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

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

4

2 回答 2

17

MultiDataTrigger 对 DependencyProperties 的作用与对普通属性的作用一样好。只需将绑定中的路径设置为依赖项属性的名称即可。

但是,您需要小心设置该绑定的源,因为默认情况下,源是触发器附加到的元素的 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>
于 2010-05-27T14:12:20.503 回答
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
        }
    }
}
于 2010-05-27T14:56:29.323 回答