Потерять фокус кнопки - PullRequest
       6

Потерять фокус кнопки

1 голос
/ 16 марта 2012

Есть кнопка, которая программно нажимается с кодом ниже, но она остается сфокусированной (хотя я не уверен с терминологией). Как я могу избавиться от этого?

after before

private void txt_addRemove_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        btn_BC_add.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));                
    }
}

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Помимо факта, что на самом деле проводной для вызова ButtonClick. Что вы должны сделать, вместо этого, по крайней мере, определить Command, связать его с кнопкой, и из этого кода не вызывать RaiseEvent, а вызывать Command связанный на эту кнопку. На практике вы вызываете функцию.

Что касается фокуса, должно быть достаточно для того, чтобы явно установить фокус на какой-то другой элемент управления вашего обзора.

Надеюсь, это поможет.

0 голосов
/ 16 марта 2012

Вы можете использовать TraversalRequest Class для MoveFocus или явно установить Focus для другого элемента.

1012 * т.е. *

btn_BC_add.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

На всякий случай, если ваша кнопка является последней в порядке фокусировки, вы можете попробовать другие опции FocusNavigationDirection, такие как Предыдущий, Первый, Последний, Левый, Правый, Вверх, Вниз, .

0 голосов
/ 16 марта 2012

Есть много способов сделать то, что вы хотите правильно, вот один:

Лучше всего установить UpdateSourceTrigger на PropertyChanged и использовать Command для привязки клавиши Enter к. Это должна быть та же команда, к которой привязывается ваша кнопка (поэтому перенесите свою бизнес-логику на уровень модели представления).


В качестве альтернативы, если это единственная кнопка в вашей форме, вы можете установить для свойства IsDefault значение true (вам все равно нужно установить UpdateSourceTrigger в PropertyChanged).

...