簡體   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