我正在尝试在列表框中设置ListBoxItems的样式,但ListBoxItem的内容不会显示,并且颜色的任何更改都不明显。唯一有效的是我已经应用到每个列表项底部的“边框底部”。
<Style x:Key="ListItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="MinHeight" Value="30" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="#FF66AFDE" BorderThickness="0 0 0 1" />
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Red"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:1)
使用 ListBoxItem 控制模板中的面板/容器/装饰器设置背景颜色。 (似乎设置选择背景颜色的逻辑会干扰控制其背景颜色的尝试。)
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border
Name="PART_Border"
Focusable="true"
Background="{TemplateBinding Background}"
BorderBrush="#FF66AFDE"
BorderThickness="0 0 0 1"
>
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter
Property="Background"
Value="Red"
TargetName="PART_Border"
/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
另请注意,Border.Focusable
默认为 false 。如果将其设置为 true 不起作用(我承认,我还没有测试过),请使用不同的容器控件而不是Border。
此外,如果您要显示的内容有任何控件接收焦点(例如按钮或文本字段),触发器可能无法按预期工作,因为边框可能不具有焦点控制内容有重点。此外,从控件到控件的选项卡可能会出现意外行为。如果你必须处理这种情况,请尝试在ItemTemplate中处理触发器。
关于ContentPresenter
没有显示任何内容:根据ItemsSource中元素的类型,您可能需要定义 ListBox.ItemTemplate (或 ListBox.ItemTemplateSelector < / em>),否则 ContentPresenter 可能不知道要显示什么。
答案 1 :(得分:0)
试试这个
<Style x:Key="ListItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="MinHeight" Value="30" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border BorderBrush="#FF66AFDE" BorderThickness="0 0 0 1" x:Name="border">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter TargetName="border" Property="Background" Value="Red"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我希望这会有所帮助