现在假设我有一个控件全部绑定在stackpanel
内。
默认情况下,按下TAB
时,焦点将从控件1移动到控件10。
现在我想要的是,在焦点从control 1
移动到control 2
后,当用户再次按TAB
时,焦点将返回到control 1
。到目前为止,我只能使用KeyboardNavigation.TabIndex="N" where N = "0,1,2,3,.."
来处理序列,但我最终想要的是跳过其余的8个控件。
请不要建议TabNavigation =“NONE”或IsTabStop =“False”跳过控件,我不想搞乱其他控件而且是的,我很好用硬编码序列
答案 0 :(得分:1)
覆盖您想要控制的控件上的预览键向下事件,如果其选项卡然后执行您想要的操作。
这是一个例子,如果它像文本框那样你可以使用这样的东西。在c#或xaml中使用事件处理程序。
btn1.PreviewKeyDown += new KeyEventHandler(btn1_KeyDown);
btn2.PreviewKeyDown += new KeyEventHandler(btn2_KeyDown);
然后
private void btn1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)))
{
//do what you want when shift+tab is pressed.
e.Handled = true;
}
else
{
btn2.Focus();
e.Handled = true;
}
}
private void btn2_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)))
{
//do what you want when shift+tab is pressed.
e.Handled = true;
}
else
{
btn1.Focus();
e.Handled = true;
}
}