我想改寫systemColors中一個的ListBoxItem的。我的目標是更改選定但未聚焦的專案的背景。默認情況下,當焦點丟失時它是灰色的,例如。通過顯示背景關系選單。我不想要花哨的復雜樣式糖代碼,只是一些非常簡單的東西。我在網上發現了幾個關于覆寫 SystemColors 的執行緒,但沒有一個有效。
下面的復制粘貼代碼不起作用,畫筆將被忽略并且沒有效果。
<Window x:Class="WpfAppListBoxItemBrushes.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="400">
<ListBox>
<ListBox.ItemsSource>
<x:Array Type="sys:String">
<sys:String>1st item</sys:String>
<sys:String>2nd item</sys:String>
</x:Array>
</ListBox.ItemsSource>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Test"/>
</ContextMenu>
</ListBox.ContextMenu>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkDarkBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkDarkColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightLightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightLightColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveBorderBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveBorderColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Red" />
</Style.Resources>
</Style>
</ListBox.Resources>
</ListBox>
樣式定義對 ListBoxItem 根本沒有影響。這段代碼有什么問題?

uj5u.com熱心網友回復:
嘗試將顏色移至Resourcesof ListBox。它應該僅為此ListBox及其子項 ( ListboxItems)更改系統顏色。
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveCaptionTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkDarkBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkDarkColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightLightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlLightLightColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveBorderBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveBorderColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionTextBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveCaptionTextColorKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Red" />
</ListBox.Resources>
uj5u.com熱心網友回復:
恐怕這是不可能的,因為畫筆是硬編碼在ListBoxItem.
因此,您必須將整個模板復制到 XAML 標記中,然后根據您的要求對其進行修改。
不使用自定義模板就無法“覆寫”畫筆。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372430.html
