Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF RadGridView-如果输入键(但值未更改)的行为类似于转义键_Wpf_Telerik_Telerik Grid_Radgridview - Fatal编程技术网

WPF RadGridView-如果输入键(但值未更改)的行为类似于转义键

WPF RadGridView-如果输入键(但值未更改)的行为类似于转义键,wpf,telerik,telerik-grid,radgridview,Wpf,Telerik,Telerik Grid,Radgridview,在RadGridView中编辑单元格时,escape键的正常行为是离开编辑模式,但将焦点保留在同一单元格上;如果按enter键,则提交编辑并将焦点前进到下一个可编辑单元格 我的老板想让我修改这个行为,这样,如果按下enter键,但单元格的值没有改变,就好像它是escape键一样。虽然我已经能够取消提交,但焦点仍然前进到下一个可编辑单元格,而这不是他想要的 实现我们期望的目标的最佳方式是什么?提前感谢您的帮助。最简单的方法可能是处理编辑文本框的PreviewKeyDown事件,并以编程方式提交编辑

RadGridView
中编辑单元格时,escape键的正常行为是离开编辑模式,但将焦点保留在同一单元格上;如果按enter键,则提交编辑并将焦点前进到下一个可编辑单元格

我的老板想让我修改这个行为,这样,如果按下enter键,但单元格的值没有改变,就好像它是escape键一样。虽然我已经能够取消提交,但焦点仍然前进到下一个可编辑单元格,而这不是他想要的


实现我们期望的目标的最佳方式是什么?提前感谢您的帮助。

最简单的方法可能是处理编辑
文本框的
PreviewKeyDown
事件,并以编程方式提交编辑并执行其他操作:

private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        e.Handled = true;
        outerGrid.CommitEdit();
    }
}
XAML:

<telerik:GridViewDataColumn>
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
    <telerik:GridViewDataColumn.CellEditTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Name}" PreviewKeyDown="TextBox_PreviewKeyDown" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:RadGridView.Columns>
    <local:CustomColumn DataMemberBinding="{Binding Name}" Header="Name" />
</telerik:RadGridView.Columns>
用法:

<telerik:GridViewDataColumn>
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
    <telerik:GridViewDataColumn.CellEditTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Name}" PreviewKeyDown="TextBox_PreviewKeyDown" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:RadGridView.Columns>
    <local:CustomColumn DataMemberBinding="{Binding Name}" Header="Name" />
</telerik:RadGridView.Columns>

提交不需要的编辑似乎很违反直觉,但这就是关键所在。多谢。