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