当我将<period>
写入myTextBox
时,我想要执行myOtherText.Focus
。
任何人都知道在xaml代码中执行此操作的方法吗?
编辑:同意我要求的orginale解决方案有点hacky。所以我改变了问题。 :)
答案 0 :(得分:1)
我认为你不能用XAML解决这个问题。至少没有任何理智的方式。
您可以做的是收听文本框控件上的KeyDown或KeyUp事件,并相应地移动焦点。根据您是否要显示点,您可以选择要收听哪些事件:
KeyUp
e.Key == Key.0emPeriod
并移动焦点
KeyDown
e.Key == Key.0emPeriod
并移动焦点
KeyDown
并在e.Key == Key.0emPeriod
时移动焦点,并在e.Handled
后设置true
移动焦点(在KeyDown
事件处理程序中)此代码可以将焦点移动到Tab键顺序中的下一个:
private void MoveFocus(TextBox from)
{
// Assuming the logical parent is a panel (grid, stackpanel etc.) and
// that the element to move focus to is also in the same panel after
// the current one
// This will break if you have a more complex layout
var panel = from.Parent as Panel;
if (panel == null)
return;
var pos = panel.Children.IndexOf(from);
for (int i = pos + 1; i < panel.Children.Count; i++)
{
UIElement child = panel.Children[i];
if (KeyboardNavigation.GetIsTabStop(child))
{
child.Focus();
break;
}
}
}
当然,如果您始终知道要将焦点移动到的控件的名称,您可以说:
myOtherTextBox.Focus();
而不是浏览面板的子集合。