我有一个包含许多文本框的网格。我想使用上/下/左/右键从一个文本框移动到另一个文本框。 我已经尝试在网格上设置KeyBoardNavigation.DirectionNavigation属性,但它不起作用。但是Tab导航工作正常。 有任何建议请。
答案 0 :(得分:3)
正如我在评论中所说的那样:想要这是一件奇怪的事情 - 但是,我认为最简单的方法是让自己成为一个特殊的跳跃文本框,它会覆盖预览keydown事件到行动重点改变。
DECLARE @TempProcResult TABLE (ID INT, OtherField VARCHAR(50));
INSERT INTO @TempProcResult (ID, OtherField)
EXEC SECOND_SP @ID;
INSERT INTO dbo.abc (Id, TypeString)
SELECT tmp.ID, @TypeString
FROM @TempProcResult tmp;
然后XAML就像普通的文本框一样工作:
public class JumpyTextBox : TextBox
{
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.Key == Key.Up || e.Key == Key.Down)
MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous));
if (e.Key == Key.Down || e.Key == Key.Right)
MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
然后,您可以在网格中包含标签导航,其中包含'特殊'文本框:
<local:JumpyTextBox Grid.Column="0" Text="field 1" />
<local:JumpyTextBox Grid.Column="1" Text="field 2" />