кнопка по умолчанию срабатывает при загрузке окна - PullRequest
0 голосов
/ 24 октября 2009

У меня есть окно входа с кнопкой «Вход», которая установлена ​​как кнопка по умолчанию (IsDefault = «True»). Кнопка входа в систему должна открывать новое окно, в котором также есть кнопка по умолчанию.

Когда пользователь нажимает клавишу ввода, возникает событие нажатия кнопки «Вход» и открывается новое окно. Но по какой-то причине событие click для кнопки по умолчанию в новом окне также возникает, как только окно открывается.

Такое поведение не наблюдается, если пользователь нажимает кнопку входа с помощью мыши или вкладки к ней и нажимает клавишу пробела.

Любые идеи о том, почему это происходит или как обойти это?

ПРИМЕЧАНИЕ. Я попытался установить IsDefault = true в загруженном событии нового окна (а не в xaml), но это не помогло.

Ответы [ 2 ]

0 голосов
/ 30 октября 2009

К сожалению, произошло недопонимание. По-видимому, первое окно не использовало IsDefault. Вместо этого событие KeyUp в окне наблюдало за клавишей ввода. Кроме того, e.Handled не был установлен. Это заставляло кнопку по умолчанию во втором окне обрабатывать нажатие клавиши ввода из первого окна.

0 голосов
/ 24 октября 2009

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

Стоит отметить, что реализация кнопки IsDefault / IsCancel основана на механизме AccessKeys, который является одной из наиболее противоречивых частей инфраструктуры (imho).

Я думаю, вы могли бы получить какие-то коллизии ключей доступа, или ваша частота повторения слишком высока, или, может быть, ваша клавиша Enter просто застряла:)?

Подробнее о клавишах доступа и кнопках по умолчанию можно узнать на Блог Нила Мосафи . Кто знает, может быть, вы найдете ответ прямо здесь, в AccessKeyScoper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...