我刚刚创建了一个DataGrid:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn ... />
<DataGridCheckBoxColumn Binding="{Binding Path=IsEditing, Mode=TwoWay}" Header="IsEditing" />
</DataGrid.Columns>
</DataGrid>
我的问题是当我想在记录中选中此复选框时,首先选中该行,然后我才能选中此复选框 ...这是非常不舒服...另外... 创建对象的依赖项属性的事件,当我选择另一行时,此DataGrid也会运行。
为了更清楚,我会一步一步地解释你:
为什么这样做太可怕了?有没有选择让它对用户来说更舒服(对我而言)?
答案 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