繁体   English   中英

datagrid wpf 复选框全选

[英]datagrid wpf checkbox select all

我有一个现成的项目,在其中添加了一个复选框列,现在我想单击标题以选择所有复选框。

例如,我使用此代码https://stackoverflow.com/a/48990131/11732842

DataGrid 通过 AutoGeneratingColumn 填充

private void MainDG_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            Wpf.DGSetDateFormat(e);
            if (e.Column is DataGridCheckBoxColumn && e.Column.Header.ToString()== "IsCheced")
            {
                var checkboxFactory = new FrameworkElementFactory(typeof(CheckBox));
                checkboxFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center);
                checkboxFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center);
                checkboxFactory.SetBinding(ToggleButton.IsCheckedProperty, new Binding(e.PropertyName) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Path = ViewModel.AllSelected });

                e.Column = new DataGridTemplateColumn
                {
                    Header = e.Column.Header,
                    CellTemplate = new DataTemplate { VisualTree = checkboxFactory },
                    SortMemberPath = e.Column.SortMemberPath
                };
            }
        }

错误 Path = ViewModel.AllSelected: 未能将 bool 类型显式转换为路径

您应该将Path属性设置为实际的绑定路径,或者不设置它,因为您在创建绑定时将路径传递给构造函数:

checkboxFactory.SetBinding(ToggleButton.IsCheckedProperty, 
    new Binding(e.PropertyName) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });

“IsCheced”列中的CheckBox应绑定到IsCheced (您是否拼错了“checked”)属性。 标题中的CheckBox应该绑定到视图模型的属性:

checkboxHeaderFactory.SetBinding(ToggleButton.IsCheckedProperty, 
    new Binding(nameof(ViewModel.AllSelected))
    { 
        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
        Source = DataContext
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM