[英]WPF DataGrid make new row TabStop
我有一個CanUserAddRows =“ True”的DataGrid。 我的表有多個列; 用戶可以編輯單元格並按Tab跳到下一個單元格。 當您位於最后一列時,Tab會將您帶到下一行。
但是,如果您正在編輯“新行”,則在最后一列上按Tab鍵時,焦點將跳至創建新行之前的窗口中的下一個控件。
我需要做的是將焦點轉移到DataGrid中新創建的行。 老實說,我不知道從哪里開始解決這個問題。
編輯:我應該澄清一下,新行的第一列是應該獲得焦點的列(想像有人用鍵盤使用制表符來填充網格)。
您可以為DataGrid
處理PreviewKeyDown
事件,以攔截TAB
按鍵並以編程方式按ENTER
鍵:
<DataGrid x:Name="dg" ... PreviewKeyDown="dg_PreviewKeyDown" />
private void dg_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
e.Handled = true;
var key = Key.Enter;
var target = Keyboard.FocusedElement;
var routedEvent = Keyboard.KeyDownEvent;
dg.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual(dg), 0, key)
{
RoutedEvent = routedEvent
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.