【问题标题】:Remove selection highlight from custom WPF ListView从自定义 WPF ListView 中删除选择突出显示
【发布时间】:2018-03-31 06:30:24
【问题描述】:

我有一个 ListView 和自定义 ItemTemplate 的项目。 我想移除或更改选择的视觉效果。

到目前为止,我尝试将自定义 ItemContainerStyle 分配给我的 ListView

<ListView x:Name="DispList" ItemContainerStyle="{StaticResource MySty}" ItemTemplate="{StaticResource Mine}">

</ListView>

并且在resources下,定义样式如下:

<Style TargetType="{x:Type ListViewItem}" x:Key="MySty">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
        </Style.Resources>
</Style>

很遗憾,这不起作用。我错过了什么?

【问题讨论】:

    标签: wpf vb.net listview highlight


    【解决方案1】:

    这种尝试覆盖系统颜色的方法不适用于 Windows 8 及更高版本。 您需要修改 ListViewItem 容器的 ControlTemplate。

    参考:ListView Selected Item Style Override

    一个例子:

    <ListView>
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListBoxItem}">
                            <Border x:Name="RootBorder">
                                <ContentPresenter/>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="RootBorder" Property="BorderBrush" Value="Red"/>
                                    <Setter TargetName="RootBorder" Property="BorderThickness" Value="1"/>
                                </Trigger>
                                <!--<Trigger Property="IsSelected" Value="True">
                                    <Setter TargetName="RootBorder" Property="Background" Value="LightBlue"/>
                                </Trigger>-->
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.ItemContainerStyle>
        <ListViewItem>123</ListViewItem>
        <ListViewItem>456</ListViewItem>
        <ListViewItem>789</ListViewItem>
    </ListView>
    

    【讨论】:

    • 感谢指点方向,但能否详细说明ControlTemplate下的哪些属性对应视觉选择效果?抱歉,我只想禁用选择可见性。
    • 我已经通过添加一个可以实现您想要的示例来修改我的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多