我发现自己有点难以理解如何处理以下内容 - 为了简单起见,假设我在TabControl
的一个标签中包含的用户控件中有两个文本框,并且其中包含各种其他控件。其他标签,对于这个例子来说是无关紧要的。当我的用户点击Tab键从一个文本框到下一个文本框时,TabControl
实际上切换了标签...不用说这不是生产中可能发生的行为。有没有什么方法可以将Tab键手势捕获到活动用户控件,以便它不会冒泡?到目前为止,我尝试了以下操作,但没有运气:
XAML
<TabControl.InputBindings>
<KeyBinding Gesture="TAB" Command="{Binding CancelTabChangeCommand}"/>
</TabControl.InputBindings>
C#
this.CancelTabChangeCommand = new DelegateCommand<object>(t => { });
我通常会拦截预览键向下事件并检查手势是否是我试图禁用的那些,然后在事件参数中标记处理属性,但由于我的应用程序是MVVM,我已经漂移了我对此事的专业知识很少。上面我希望将关键手势设置为空命令会覆盖正常事件,但显然情况并非如此。
任何帮助都会很棒。
答案 0 :(得分:2)
您可以将KeyboardNavigation.TabNavigation设置为与Continue
不同的KeyboardNavigationMode,以控制指定范围内Tab键的行为。
例如,以下内容将使用户控件中的选项卡导航保持不变:
<local:MyUserControl KeyboardNavigation.TabNavigation="Contained" />