0

だから私は自分の問題の解決策を見つけるために数時間努力してきました。インターネット上で、うまくいくと言われている方法を見つけることができます(リンク)。

しかし、試してみた後、リストボックスのエントリを1つ選択すると、テキストのみが(Foregroundプロパティを介して)青に変わりますが、行は赤に色付けされません。私が間違っていることについて何か考えがありますか?

<Style x:Key="BPFStandardListBoxItem" TargetType="{x:Type ListBoxItem}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Purple"/>
    </Style.Resources>
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border Name="Border" Padding="2" SnapsToDevicePixels="true">
                    <ContentPresenter />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="Foreground" Value="Blue" />
                    </Trigger>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Cursor" Value="Hand" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter> 
</Style>
4

2 に答える 2

1

listboxItem があるため、そのプロセスでは、overrideテンプレートによって完全にオーバーライドされるため、いくつかのトリガーまたはいくつかのデフォルト プロパティが必要です。default templatebroken

あなたが達成しようとしているものは、このようにテンプレートをオーバーライドせずに達成できます (ブラシを使用HighlightTextBrushKeyして前景を設定します) -

<Style x:Key="BPFStandardListBoxItem" TargetType="{x:Type ListBoxItem}">
   <Style.Resources>
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                       Color="Red"/>
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" 
                       Color="Blue"/>
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                       Color="Purple"/>
   </Style.Resources>
   <Style.Triggers>
       <Trigger Property="IsMouseOver" Value="True">
           <Setter Property="Cursor" Value="Hand" />
       </Trigger>
    </Style.Triggers>
</Style>
于 2012-10-24T14:44:35.333 に答える
-1

うーん、よくわかりません-そのようにしたことは一度もありません-トリガーで境界線の背景を設定することはいつでもできます

..何かのようなもの

 <Trigger Property="IsSelected" Value="true">
                <Setter TargetName="Border" Property="Background"
                     Value="Red"/>
   </Trigger>

詳細については、http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspxを参照してください。

于 2012-10-24T13:46:36.153 に答える