Подтвердить что ты не робот

Обнаружение фокуса управления в Silverlight

Есть ли способ узнать, сосредоточен ли элемент управления (в частности, System.Windows.Controls.TextBox) в Silverlight? Я ищу что-то вроде следующего (что вы увидите в обычном приложении .Net):

textBox.Focused

Это похоже на что-то простое и тривиальное, чтобы исключить из контроля, и все же я не могу найти ответ нигде.

Обновление

Несколько более элегантное решение, включающее ответ Rob, заключается в том, чтобы создать метод расширения следующим образом:

public static bool IsFocused( this Control control )
{
    return FocusManager.GetFocusedElement() == control;
}
4b9b3361

Ответ 1

Вы должны использовать FocusManager

bool b = FocusManager.GetFocusedElement() == textBox;

Ответ 2

Как только у вас есть элемент управления, состоящий из более чем одного входного элемента (который должен иметь фокус для обработки пользовательского ввода), спрашивая, что FocusManager больше не будет делать трюк. Попробуйте следующее:

private bool HasFocus { get; set; }

protected override void OnGotFocus( RoutedEventArgs e )
{
    base.OnGotFocus( e );
    HasFocus = true;
}

protected override void OnLostFocus( RoutedEventArgs e )
{
    base.OnLostFocus( e );
    HasFocus = false;
}