我正在寻找使用ListView
构建一个菜单(我愿意使用其他任何能够实现我正在寻找的效果的东西。我想模仿的外观如下
以下是我目前为XAML所做的事情。
<ListView
ItemsSource="{Binding Decisions}"
SelectedItem="{Binding SelectedDecision}"
HorizontalAlignment="Left"
BorderThickness="0"
Width="350"
FontSize="12">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel
Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Border
BorderThickness="1"
BorderBrush="#DDD"
CornerRadius="2">
<TextBlock
Text="{Binding Converter={StaticResource DecisionTypeNameConverter}}"
Padding="8"
Background="#EEE" />
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这会产生一个好看的菜单,直到我选择一个项目。选择一个项目后,它会被一个丑陋的深蓝色包围。如何在XAML中重新创建此外观(不需要渐变效果)?
答案 0 :(得分:1)
为了防止蓝色选择矩形,您必须设置ItemContainerStyle而不是ItemTemplate。请参阅ListView Styles and Templates上的MSDN,了解ListViewItem默认样式,尤其是“Selected”可视状态。
答案 1 :(得分:1)
您是否需要跟踪SelectedItem
?
如果没有,我建议使用ItemsControl
如果是这样,您需要覆盖所选的项目笔刷颜色,使其不显示。这是一种系统颜色,我通常会像这样覆盖它:
<ListView.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
</ListView>