首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带有复选框的WPF ListView取消选中

的方法如下:

  1. 在XAML文件中,为ListView控件添加一个CheckBox列,并将IsChecked属性绑定到ListViewItem的IsSelected属性,以实现选中和取消选中的同步。
代码语言:xml
复制
<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding IsChecked, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type CheckBox}}}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumn.Header>
                    <CheckBox x:Name="SelectAllCheckBox" Content="全选" Checked="SelectAllCheckBox_Checked" Unchecked="SelectAllCheckBox_Unchecked"/>
                </GridViewColumn.Header>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}}"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <!-- 其他列 -->
        </GridView>
    </ListView.View>
</ListView>
  1. 在代码文件中,处理全选和取消全选的逻辑。
代码语言:csharp
复制
private void SelectAllCheckBox_Checked(object sender, RoutedEventArgs e)
{
    foreach (var item in listView.Items)
    {
        var listViewItem = listView.ItemContainerGenerator.ContainerFromItem(item) as ListViewItem;
        var checkBox = FindVisualChild<CheckBox>(listViewItem);
        checkBox.IsChecked = true;
    }
}

private void SelectAllCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    foreach (var item in listView.Items)
    {
        var listViewItem = listView.ItemContainerGenerator.ContainerFromItem(item) as ListViewItem;
        var checkBox = FindVisualChild<CheckBox>(listViewItem);
        checkBox.IsChecked = false;
    }
}

private T FindVisualChild<T>(DependencyObject obj) where T : DependencyObject
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
    {
        var child = VisualTreeHelper.GetChild(obj, i);
        if (child != null && child is T)
            return (T)child;
        else
        {
            var childOfChild = FindVisualChild<T>(child);
            if (childOfChild != null)
                return childOfChild;
        }
    }
    return null;
}

这样,当点击全选CheckBox时,所有的复选框都会被选中;当取消全选CheckBox时,所有的复选框都会取消选中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券