1

動的リソースの値に基づいてコントロール スタイルを切り替えたいと考えています。

<Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" >
    <Image.Triggers>
        <DataTrigger Binding="{DynamicResource BlackAndWhite}" Value="True">
            <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" />
        </DataTrigger>
    </Image.Triggers>
</Image>

これは正常にコンパイルされますが、実行時に次の例外が発生します。

A 'DynamicResourceExtension' cannot be set on the 'Binding' property of type 'DataTrigger'. A 'DynamicResourceExtension' can only be set on a DependencyProperty of a DependencyObject.

私がやろうとしていることは可能ですか?構文が間違っているだけですか?私はそれを別の方法で行うべきですか?

編集 コードを次のように変更しました:

<DataTemplate x:Key="ViasTemplate">
                    <StackPanel Orientation="Horizontal">
                        <Border Padding="{Binding ElementName=templateTest, Path=DataContext.GridRow.LeftBondIndent}" Width="50">
                            <Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" >
                                <Image.Triggers>
                                    <DataTrigger Binding="{Binding Source={StaticResource BlackAndWhite}}" Value="True">
                                        <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" />
                                    </DataTrigger>
                                </Image.Triggers>
                            </Image>

しかし、今ではこの例外が発生します:

Triggers collection members must be of type EventTrigger

ありがとう

4

1 に答える 1

1
  <Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" >
        <Image.Triggers>
            <DataTrigger Binding="{Binding Source={DynamicResource BlackAndWhite}}" Value="True">
                <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" />
            </DataTrigger>
        </Image.Triggers>
    </Image>

もちろん、このトリガーを画像スタイルに移動する必要があります。DataTrigger は、スタイルまたはテンプレートでのみ定義できます

于 2013-03-20T13:31:55.233 に答える