Wpf 如何在DataGrid中有选择地禁用编辑?

Wpf 如何在DataGrid中有选择地禁用编辑?,wpf,wpfdatagrid,Wpf,Wpfdatagrid,默认情况下,编辑由F2激活,双击并在选定单元格中键入。 如何启用/禁用这些(其中一些)编辑触发器?我认为最干净的方法是让datagrid的行为保持独立,它知道它在做什么,并在edting模板中创建自己的控件。我们将其称为(供参考)CustomTextBox。让CustomTextBox做您喜欢的事情,比如只响应F2键,等等。这样您就不会在datagrid中创建奇怪的行为,也不会在自定义控件中封装自定义行为 datagrid.KeyDown += new KeyEventHandler(datag

默认情况下,编辑由F2激活,双击并在选定单元格中键入。
如何启用/禁用这些(其中一些)编辑触发器?

我认为最干净的方法是让datagrid的行为保持独立,它知道它在做什么,并在edting模板中创建自己的控件。我们将其称为(供参考)CustomTextBox。让CustomTextBox做您喜欢的事情,比如只响应F2键,等等。这样您就不会在datagrid中创建奇怪的行为,也不会在自定义控件中封装自定义行为

datagrid.KeyDown += new KeyEventHandler(datagrid_KeyDown);

void datagrid_KeyDown(object sender, KeyEventArgs e)
    {
        //obviously you'll have to add some code here
        //if(!datagridIsInEditMode) then
            if (Keyboard.IsKeyDown(Key.F2))
                   datagrid.BeginEdit();
            else
                  e.Handled = true;
    }
<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock DataContext="{Binding SomeProperty}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <yourNamespace:CustomTextBox DataContext="{Binding SomeProperty}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn> 


要启用或禁用的触发器示例?@Blam。我只想通过F2或双击进行编辑,但不想键入银行,我会试试。我对DataGrid的研究越深入,我就越感到失望。事件IsInEditMode属性不是现成实现的=(我将在几分钟后发布另一个建议)“在我看来,塔塔模板在模式改变时会被切换。因此,我需要告诉DataGrid何时完成。