DataGridCheckBoxColumn不能正常工作

本文关键字:工作 常工作 不能 DataGridCheckBoxColumn | 更新日期: 2023-09-27 18:14:41

我刚刚创建了一个DataGrid:

    <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn ... />
            <DataGridCheckBoxColumn Binding="{Binding Path=IsEditing, Mode=TwoWay}" Header="IsEditing" />
        </DataGrid.Columns>
    </DataGrid>

我的问题是当我想检查这个复选框在记录内首先行被选中,只有这样我才能检查这个复选框…这很不舒服……此外……事件,用于创建对象的依赖属性,当我选择另一行时,此DataGrid也会运行。

为了更清楚,我将一步一步地向你解释:

  1. 我想选择一个项目,它将运行事件的依赖属性。
  2. 我点击复选框,但是选中的不是选中,而是一行
  3. 我必须再次点击复选框来检查它,但是事件也不运行
  4. 我必须点击/选择其他行来运行上次选择对象的依赖属性事件/行

为什么这个工作这么糟糕?是否有任何选项,使其工作更舒适的用户(为我也)?

DataGridCheckBoxColumn不能正常工作

你需要为DataGrid添加一个MouseLeftButtonUp事件:

    private void GridMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        var grid = sender as DataGrid;
        if (grid == null)
        {
            return;
        }
        // Assume first column is the checkbox column.
        if (grid.CurrentColumn == grid.Columns[0])
        {
            var gridCheckBox = (grid.CurrentColumn.GetCellContent(grid.SelectedItem) as CheckBox);
            if (gridCheckBox != null)
            {
                gridCheckBox.IsChecked = !gridCheckBox.IsChecked;
            }
        }
    }

为DataGridCheckBoxColumn添加属性IsThreeState =" False"