You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3+C#:如何让ListView项不可选但CheckBox可勾选?

解决WinUI 3 ListView仅允许CheckBox交互、禁止行选中的问题

核心思路

不要直接禁用整个ListView的命中测试,而是针对ListViewItem的选中行为进行控制,同时保留内部CheckBox的交互能力。

方案一:通过ItemContainerStyle禁止列表项选中(推荐)

修改ListView的ItemContainerStyle,直接禁用列表项的选中功能,并移除点击视觉反馈:

<ListView x:Name="filterListView">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <!-- 彻底禁止列表项被选中 -->
            <Setter Property="IsSelectable" Value="False"/>
            <!-- 移除行点击/悬停时的视觉效果,明确告知用户行不可交互 -->
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="PointerOverBackground" Value="Transparent"/>
            <Setter Property="PressedBackground" Value="Transparent"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="35" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <CheckBox Grid.Column="0" IsChecked="{Binding SubIsSelected, Mode=TwoWay}" />
                <TextBlock Grid.Column="1" Text="{Binding SubFilterName}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

说明

  • IsSelectable="False"是关键,它直接关闭了ListViewItem的选中逻辑,不会影响内部CheckBox的双向绑定和交互。
  • 设置背景相关属性是为了消除行的点击反馈,避免用户产生误解。

方案二:通过SelectionChanged事件强制取消选中(备选)

如果方案一无法满足需求,可通过监听选中事件,强制清空选中项:

  1. 在XAML中给ListView添加事件绑定:
<ListView x:Name="filterListView" SelectionChanged="filterListView_SelectionChanged">
    <!-- 原有ItemTemplate代码 -->
</ListView>
  1. 在C#后台实现事件处理:
private void filterListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    filterListView.SelectedItems.Clear();
}

为什么之前的方法无效?

设置ListView.IsHitTestVisible="False"会让整个ListView容器拒绝所有交互事件,内部控件即使设置IsHitTestVisible="True"也无法接收到事件——因为事件无法穿透禁用了命中测试的父容器。

内容的提问来源于stack exchange,提问作者Ethan Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:13:12