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

时间:2012-03-29 21:55:05

标签: wpf wpfdatagrid

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

2 个答案:

答案 0 :(得分:3)

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;
    }

答案 1 :(得分:2)

我认为最干净的方法是单独留下datagrid的行为,它知道它在做什么,并在edting模板中创建自己的控件。让我们调用它(供参考)CustomTextBox。让CustomTextBox执行您喜欢的操作,例如仅响应F2键等。这样您就不会在数据网格中创建奇怪的行为,并在自定义控件中封装自定义行为。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock DataContext="{Binding SomeProperty}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <yourNamespace:CustomTextBox DataContext="{Binding SomeProperty}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>