[英]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.