【发布时间】:2011-07-01 02:47:41
【问题描述】:
在我的 WPF 应用程序中,我有一个包含各种按钮和框架的页面。在这个框架内是一些文本框。
开始时,我将焦点设置在框架内的第一个文本框上。有什么办法可以确保 Tab 只循环框架内的元素,而不跳到父页面之外?
提前谢谢你。
【问题讨论】:
在我的 WPF 应用程序中,我有一个包含各种按钮和框架的页面。在这个框架内是一些文本框。
开始时,我将焦点设置在框架内的第一个文本框上。有什么办法可以确保 Tab 只循环框架内的元素,而不跳到父页面之外?
提前谢谢你。
【问题讨论】:
为框架外的控件设置IsTabStop=false
【讨论】:
为了解决这个问题,我设置了
KeyboardNavigation.TabNavigation="Cycle"
在框架上。
【讨论】:
tabstop 可以工作。
现在我的替代解决方案 - 只是假设:框架内的第一个元素的 tabindex 等于 5,框架内的最后一个元素的 tabindex 等于 9。取框架范围内具有最大 tabindex 的元素(即根据假设元素表索引 9)。在PreviewKeyDown事件上写下如下代码:
private void frames_max_tabindex_element_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyValue == 9 )
element_that_has_tabindex_equal_to_frames_min_tab_index_minus_1.Focus();
}
简要说明。 (使用假设来演示想法)当焦点位于 tabindex 9 的框架元素上时,按下 tab 将触发 PreviewKeyDown 事件。在方法中,你将焦点设置到 tabindex 等于 4 的元素。在 tab 键被释放后,窗口会将焦点设置到下一个 tabindex,即 tabindex 等于 5 的元素。所以从tabindex = 9 你正在跳转到 tabindex = 5 的元素
【讨论】: