WPF中DataGrid实现多选框功能

1. 效果图

2. Model建立

public class RstModelCheck : ObservableObject
{
    //为了显示Head1和Head2.而且View中绑定属性而非字段,否则不能显示。
    public string? Name { get; set; }    
    public bool PlatenAll 
    {
        get => _platenAll;
        set
        {
            SetProperty(ref _platenAll, value);
            PlatenA = value;
            PlatenB = value;
            PlatenC = value;
            PlatenD = value;
        }
    }
    public bool PlatenA 
    {
        get => _platenA;
        set => SetProperty(ref _platenA, value);
    }
    public bool PlatenB
    {
        get => _platenB;
        set => SetProperty(ref _platenB, value);
    }
    public bool PlatenC
    {
        get => _platenC;
        set => SetProperty(ref _platenC, value);
    }
    public bool PlatenD
    {
        get => _platenD;
        set => SetProperty(ref _platenD, value);
    }

    private bool _platenAll;
    private bool _platenA;
    private bool _platenB;
    private bool _platenC;
    private bool _platenD;

    public RstModelCheck(string name)
    {
        this.Name = name;
    }
}

3. ViewModel编写

public ObservableCollection<RstModelCheck> IsCheckRstModel
{
    get => _isCheckRstModel;
    set => SetProperty(ref _isCheckRstModel, value);
}
private ObservableCollection<RstModelCheck> _isCheckRstModel = new();

//构造函数中添加:
IsCheckRstModel.Add(new RstModelCheck("Head1"));
IsCheckRstModel.Add(new RstModelCheck("Head2"));

4. View中Xaml编写

<DataGrid ItemsSource="{Binding IsCheckRstModel}" AutoGenerateColumns="False" SelectionUnit="Cell" ColumnHeaderHeight="20">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Platen" Binding="{Binding Name}" IsReadOnly="True" CanUserSort="False" Selector.IsSelected="False"/>
        <DataGridCheckBoxColumn Header="AllSet" Binding="{Binding Path=PlatenAll,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" CanUserSort="False"/>
        <DataGridCheckBoxColumn Header="A" Binding="{Binding PlatenA}" CanUserSort="False"/>
        <DataGridCheckBoxColumn Header="B" Binding="{Binding PlatenB}" CanUserSort="False"/>
        <DataGridCheckBoxColumn Header="C" Binding="{Binding PlatenC}" CanUserSort="False"/>
        <DataGridCheckBoxColumn Header="D" Binding="{Binding PlatenD}" CanUserSort="False"/>
    </DataGrid.Columns>
</DataGrid>

相关推荐

  1. WPF之RadioButton单和checkbox

    2024-05-26 00:22:21       15 阅读
  2. selenium,怎么判断是否已

    2024-05-26 00:22:21       8 阅读
  3. WPF DataGrid

    2024-05-26 00:22:21       35 阅读
  4. WPFDataGrid设置默认选中行

    2024-05-26 00:22:21       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-26 00:22:21       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-26 00:22:21       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-26 00:22:21       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-26 00:22:21       20 阅读

热门阅读

  1. 【FFMPEG应用篇】MP4转YUV存储

    2024-05-26 00:22:21       11 阅读
  2. 37、Flink 的窗口函数(Window Functions)详解

    2024-05-26 00:22:21       10 阅读
  3. Amazon Cognito:AWS用户身份管理服务的全面指南

    2024-05-26 00:22:21       11 阅读
  4. FreeRTOS学习 -- 任务 API 函数

    2024-05-26 00:22:21       12 阅读
  5. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】

    2024-05-26 00:22:21       10 阅读
  6. android ndc firewall 命令type 黑名单 白名单差异

    2024-05-26 00:22:21       10 阅读
  7. 29.修改idea中git的提交记录上的提交名

    2024-05-26 00:22:21       11 阅读