0

次のようにチェックボックスが定義されたWPFフォームがあります。

<Views:MyView Background="{DynamicResource MainBackground}">
    ...
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Static ResourceKeys:Switch.YesNoStyle}}">
        ...
    </Style>
    ...
    <CheckBox Grid.Column="0" 
        IsEnabled="False"  
        Checked="ToggleButton_OnChecked" 
        VerticalAlignment="Center" 
        Style="{x:Null}" 
        IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem},Mode=TwoWay}" />
    ...
</Views:MyView>

問題があります - 灰色の背景で表示され (アクティブであっても)、ユーザーを混乱させます:

チェックされていないチェックボックス:背景がグレーのチェック ボックスがオフの場合

チェックボックス:グレーの背景にチェックされたチェックボックス

背景を白くしたい。

問題の考えられる原因は次のいずれかです。

  1. スタイル<Style TargetType="{x:Type CheckBox}"
  2. 最上位コンテナの背景設定 ( Background="{DynamicResource MainBackground}")。

私がしようとしました

  1. CheckBoxとに名前を追加する
  2. その名前の新しいスタイルを作成します。

これにより、以下に示すコードが生成され、役に立ちませんでした。

<Views:MyView Background="{DynamicResource MainBackground}">
    ...
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Static ResourceKeys:Switch.YesNoStyle}}">
        ...
    </Style>
    <Style TargetType="{x:Type CheckBox}" x:Name="MyCheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
        <Setter Property="Background" Value="White"/>
    </Style>

    ...
    <CheckBox 
        Name="MyCheckBox"
        Grid.Column="0" 
        IsEnabled="False"  
        Checked="ToggleButton_OnChecked" 
        VerticalAlignment="Center" 
        Style="{x:Null}" 
        IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem},Mode=TwoWay}" />
    ...
</Views:MyView>

その特定のチェック ボックスの背景を白に変更するにはどうすればよいですか (他のアクティブなチェック ボックスと同じように見えるようにするため)。

4

1 に答える 1

1

この場合の背景色は、コントロールが無効になっているために設定されている可能性があります。IsEnabled="false"を削除して、HitTest のようなものを使用できます。

<CheckBox IsHitTestVisible="False" 
          VerticalAlignment="Center" 
          Style="{x:Null}" />

この方法では、コントロールはユーザー入力を処理しないため、無効に似ていますが、通常のスタイルになります。

編集

定義したスタイルを使用するには、キーを指定してチェックボックスで使用する必要があります。

<Style TargetType="{x:Type CheckBox}" 
       BasedOn="{StaticResource {x:Type CheckBox}}"
       x:Key="WhiteCheckBox">
     <Setter Property="Background" Value="White"/>
</Style>

<CheckBox VerticalAlignment="Center" 
          Style="{StaticResource WhiteCheckBox}" />
于 2013-07-30T07:47:30.293 に答える