我试图防止我的列表视图项在单击该项目时用虚线边框突出显示.代码位于 WPF XAML 中



我很难让这个列表视图以我需要的特定方式运行。目前,除了单击后如何用虚线边框突出显示项目外,一切正常。我相信它与 IsSelected 有关,但我不确定如何在不弄乱我所拥有的东西的情况下改变它。

<ListView x:Name="MainMenu" Foreground="#FF5C99D6" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Focusable="False" VerticalAlignment="Top" SelectedItem="{Binding SelectedMenuItem}" ItemsSource="{Binding MenuItems}">
<ListView.ItemContainerStyle>
<Style x:Name="TestStyleName" TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}">
<EventSetter x:Name="TestEventName" Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
<Condition Property="Selector.IsSelectionActive" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="Yellow" />
</MultiTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>

<!--REGION MAIN MENU-->
<ListViewItem x:Name="MainHome" Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Home" Height="25" Width="25" Margin="10"/>
<TextBlock Text="Home" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem x:Name="MainSearch" Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Magnify" Height="25" Width="25" Margin="10"/>
<TextBlock Text="Search" VerticalAlignment="Center"  Margin="20 10"/>
</StackPanel>
</ListViewItem>
</ListView>

我还尝试将其放在列表视图标题和 IemContainerStyle 之间,但这会抛弃我以前的功能。有了这个,它不再抛出对我的代码非常重要的鼠标单击事件。

<ListView.Resources>
<ControlTemplate x:Key="SelectedTemplate" TargetType="ListViewItem">
<Border Focusable="False" SnapsToDevicePixels="true" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" x:Name="border">
<ContentControl SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0" Content="{TemplateBinding Content}" />
</Border>
</ControlTemplate>
<Style TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}">
<EventSetter x:Name="TestEventName" Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
<Setter Property="Focusable" Value="False"/>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
<Condition Property="Selector.IsSelectionActive" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Pink" />
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</MultiTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>

想通了。

<ListView ...>
<ListView.ItemContainerStyle>
<Style x:Name="TestStyleName" TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}">
<EventSetter x:Name="TestEventName" Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
</Style>
</ListView.ItemContainerStyle>
....Items...
</ListView>

最新更新