我有以下列表框:
<ListBox Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding MyItems}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True">
</WrapPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
但是当我将鼠标悬停或选择一个项目时,该项目为“蓝色”。 我希望它透明。
如果要选中该项目,我还希望该项目带有下划线。
MyItem是myItem的一个observableCollection:
public class MyItem
{
public string Key { get; set; }
public bool Selected{ get; set; }
}
答案 0 :(得分:0)
例如,您可以简单地在xaml文件的顶部或理想情况下在资源xaml文件的内部设置ListBoxItem的默认样式。您必须重写默认控制模板才能实现。您不必直接设置触发器。这是例子。玩得开心。
<Window x:Class="StackPoC.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:local="clr-namespace:StackPoC"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<ListBox ItemsSource="{Binding Collection}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
编辑
我还没有阅读有关Selected *下划线的部分。好吧。您已经知道必须创建自定义控件模板才能摆脱选择。我不会为您编写代码,但会给您一个有关如何执行此操作的想法;)根据IsSelected属性在节点ControlTemplate.Triggers中创建触发器,然后使用Setter来设置所需的外观。祝你好运。