8

前景色を直接設定する XAML があります。

<Style x:Key="HomeHeaderText" TargetType="TextBlock">
    <Setter Property="FontSize" Value="24" />
    <Setter Property="FontFamily" Value="Segoe Light UI" />
    <Setter Property="Foreground" Value="#FF606060" />
    <Setter Property="Margin" Value="0,50,0,30" />
</Style>

システムがハイ コントラスト モードであるかどうかをスタイルで検出し、その場合はシステム カラーの 1 つにフォールバックしたいと考えています。

スタイルを使用してこれを行うにはどうすればよいですか?


トリガーを使用してこれを設定しようとしましたがXamlParseException、実行時に次のようになります。

<Style x:Key="HomeHeaderText" TargetType="TextBlock">
    <Setter Property="FontSize" Value="24" />
    <Setter Property="FontFamily" Value="Segoe Light UI" />
    <Setter Property="Foreground" Value="#FF606060" />
    <Setter Property="Margin" Value="0,50,0,30" />
    <Style.Triggers>
        <DataTrigger Binding="{x:Static SystemParameters.HighContrast}" Value="True">
           <Setter Property="Foreground"
               Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
        </DataTrigger>
    </Style.Triggers>
</Style>
4

3 に答える 3

1

それを textblock の Tag プロパティにバインドし、以下のように DataTrigger で使用できます。

  <Style x:Key="MyTextBoxStyle" TargetType="{x:Type TextBlock}">
     <Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.HighContrastKey}}"/>
     <Style.Triggers>
         <DataTrigger Binding="{Binding Path=Tag , RelativeSource= {x:Static RelativeSource.Self}}" Value="True">
                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
         </DataTrigger>
     </Style.Triggers>
  </Style>
于 2013-09-10T02:38:43.790 に答える