更改SelectedIndex后,带有GridView的WPF ListView无法更新SelectionBox

时间:2018-07-11 08:49:15

标签: c# wpf xaml mvvm

问题

我有一个WPF ListView和一个GridView作为ListView.View,以便在我的ListView中有列。在我的代码中,我正在更改SelectedIndex属性(绑定到ViewModel中的int),以更改选择索引。但是这样做会在先前选择的项目周围产生一个轮廓框(请参见图片)。由于视觉风格,我想删除此轮廓或将其移至新的选定项。

Image showing the unwanted box

我已经尝试过的东西

我已经尝试过更改ListViewItem的ControlTemplate(下面的代码)

<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border Background="{TemplateBinding Background}">
    <GridViewRowPresenter Margin="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
    <Border.InputBindings>
        <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ...}"/>
    </Border.InputBindings>
</Border>
<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Background" Value="#D9EBF9"/>
    </Trigger>
    <Trigger Property="IsMouseOver" Value="False">
        <Setter Property="Background" Value="Transparent"/>
    </Trigger>
    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Background" Value="#CCE8FF"/>
    </Trigger>
</ControlTemplate.Triggers>

我也在网上搜索其他解决方案,但找不到适合我的解决方案。

1 个答案:

答案 0 :(得分:0)

答案

感谢@dymanoid

通过问题解决的ListViewItem样式将FocusVisualStyle设置为{x:Null}

<Setter Property="FocusVisualStyle" Value="{x:Null}"/>