2014-01-28 71 views
2

聚焦控制我有一个用户控件如此定义的:的自定义用户控件

UserControl 
    TextBox 
    Button (Clear) 

我对UserControl一个GotFocus处理程序,以便一旦进入重点,它调用TextBox.Focus()。我遇到的问题是,如果我点击清除按钮,清除文本,然后重新调整文本框,在我的控件上触发两个GotFocus事件。我希望这能够充当:

  • 一个GotFocus事件
  • 一个GotFocus事件(按钮),一个LostFocus事件(按钮),一个GotFocus事件(文本)

我有玩FocusManager.IsFocusScope无济于事。在我致电Textbox.Focus之前,是否有办法触发手动LostFocus

+0

试着在设置IsFocusable UserControl为false? –

+0

目前,我似乎通过将该按钮标记为“Focusable = False”来解决此问题....我不确定我认为这是一个好的解决方案,因为它所做的只是让清除按钮单击不会像关注点改变 –

+0

@lll没有工作 –

回答

1

在你的GotFocus事件,您可以检查鼠标是否位于清除按钮和鼠标左键是否被按下,在这种情况下,你可以忽略调用TextBox.Focus():

private void UserControl_GotFocus(object sender, RoutedEventArgs e) 
{ 
    if ((this.clearButton.IsMouseOver && Mouse.LeftButton == MouseButtonState.Pressed) == false) 
    { 
     this.textBox.Focus(); 
    } 
}