0

作成したベースWPFウィンドウにトリガーを適用しようとしています。スタイルを正常に適用できますが、トリガーが機能していないようです。

基本的に、実行時に現在のリソースディクショナリをアプリケーションにダンプし、別のリソースディクショナリのセットをロードして、コントラストを高くします。動作しているように見えますが、ハイコントラストモードで処理する必要のある画像の解決策を見つけようとしています。この特定のケースでは、ウィンドウの背景はImageBrushに設定されています。ハイコントラストモードのときに、トリガーを使用して背景をシステムカラーに設定しようとしています。

私はこの解決策を試しましたが、どちらも機能していないようです:

<Style TargetType="{x:Type local:Mywindow}">
  <Setter Property="Tag"
          Value="{DynamicResource {x:Static SystemParameters.HighContrastKey}}" />
  <Style.Triggers>
    <Trigger
        Property="Tag"
        Value="True">
      <Setter Property="Background" Value="{DynamicResource MyColor}"/>
    </Trigger>
  </Style.Triggers>
</Style>

そしてまた

<Style TargetType="{x:Type local:Mywindow}">
    <Style.Triggers>
        <DataTrigger
            Binding="{Binding Source={x:Static SystemParameters.HighContrast}}"
            Value="True">
            <Setter Property="Style" Value="{DynamicResource highContrastStyle}"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
4

1 に答える 1

0

理解した。RelativeSource.Selfへのバインドを行う必要がありました。trueとfalseの2つのトリガーを追加します。コンバーターは無視してください。使用していた画像用にコンバーターが必要でした。

<Style x:Key="MyWindowKey" TargetType="{x:Type test:MyWindow}">
        <Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.HighContrastKey}}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource= {x:Static RelativeSource.Self}, Path=Tag}" Value="True">
                <Setter Property="Background" Value="{DynamicResource MyWindowBrush}"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource= {x:Static RelativeSource.Self},  Path=Tag}" Value="False">
                <Setter Property="Background">
                    <Setter.Value>
                        <ImageBrush ImageSource="{Binding Source={x:Static test:Images.MyImage},Converter={StaticResource ResourceKey=ImageConverter}}" Stretch="UniformToFill">
                        </ImageBrush>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style><
于 2012-10-20T23:36:25.573 に答える