9

Styleプロパティとデータ値がtrueの場合、コントロールのを変更できる必要があります。たとえば、バインドされたデータにはIsDirtyプロパティがあります。IsDirtytrueで、コントロールが選択されているときに、コントロールの背景色を変更したいと思います。MultiTriggerとクラスを見つけましたMultiDataTrigger...しかし、この場合、データとプロパティを何らかの方法でトリガーする必要があります。これどうやってするの?

別の注意: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 に答える