DataGridCheckBoxColumn不能正常工作

时间:2011-11-14 22:27:19

标签: c# .net wpf xaml wpfdatagrid

我刚刚创建了一个DataGrid:

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

我的问题是当我想在记录中选中此复选框时,首先选中该行,然后我才能选中此复选框 ...这是非常不舒服...另外... 创建对象的依赖项属性的事件,当我选择另一行时,此DataGrid也会运行。

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

  1. 我想选择将运行依赖属性事件的项目。
  2. 我点击复选框但是只选择了cheched only row
  3. 我必须在checbox上单击“再次”进行检查,但事件也不会运行
  4. 我必须单击/选择其他行才能生成上一个选定对象/行的依赖属性的运行事件
  5. 为什么这样做太可怕了?有没有选择让它对用户来说更舒服(对我而言)?

2 个答案:

答案 0 :(得分:0)

您需要为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;
            }
        }
    }

答案 1 :(得分:0)

添加属性IsThreeState =&#34; False&#34;到DataGridCheckBoxColumn