我定义了一个UserControl:
UserControl
TextBox
Button (Clear)
我在GotFocus
上有一个UserControl
处理程序,因此无论何时获得焦点,它都会调用TextBox.Focus()
。我遇到的问题是,如果我单击清除按钮,它会清除文本,然后重新聚焦到文本框,在我的控件上触发两个GotFocus事件。我希望这可以作为:
我玩FocusManager.IsFocusScope
无济于事。在我致电LostFocus
之前,有没有办法触发手动Textbox.Focus
?
答案 0 :(得分:1)
在您的GotFocus事件中,您可以检查鼠标是否在清除按钮上以及是否按下了鼠标左键,在这种情况下您可以忽略对TextBox.Focus():
的调用
private void UserControl_GotFocus(object sender, RoutedEventArgs e)
{
if ((this.clearButton.IsMouseOver && Mouse.LeftButton == MouseButtonState.Pressed) == false)
{
this.textBox.Focus();
}
}