2013-07-31 2 views
0

У меня есть приложение WPF, и с какой проблемой я сталкиваюсь, мое приложение не закрывается при нажатии одной кнопки (X). Может быть, я знаю причину.Wpf Application cross (X) Кнопка, не работающая над одним кликом

Первоначально, что происходит, я устанавливаю Focus в MenuItem, когда загружается окно, поэтому, когда я нажимаю на кнопку Cross (X), фокус с MenuItem удаляется, а затем на второй нажмите кнопку «Крест» (x).

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    MenuItem1.Focus();    
} 

Но когда я не устанавливаю Focus на MenuItem, кнопка Cross работает одним нажатием.

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    // MenuItem1.Focus();     
} 

Я хочу, чтобы установить фокус на MenuItem и хочу кнопку Красного Креста (X) для выполнения на Singleclick ..

ли их какие-либо образом, что этот сценарий может быть достигнут .. ???

+0

У чего-то * есть * для фокусировки, кнопка закрытия должна работать независимо от фокуса. Можете ли вы проверить, что это не происходит, если вы не настроили фокус? Если это не так, можете ли вы опубликовать небольшой, компилируемый пример? – nvoigt

+0

см. Отредактированную версию, если это помогает – Vishal

ответ

1

Я согласен, что такое поведение происходит ... MenuItem - это не то же самое, что и у Button с фокусом. @Samuel, FocusManager.IsFocusScope не имеет никакого эффекта здесь. Когда фокусируется Menu, он даже останавливает перемещение или изменение размера окна, не говоря уже о том, что любой из его Button нажат.

Я пробовал реализовать другие события, такие как MouseLeave и LostFocus (на окне) все без возможности сменить это сфокусированное MenuItem.

Я не знаю, почему Фарзи хочет, чтобы он автоматически фокусировался, но я бы предположил, что это плохая идея. Может быть, чего хочет Фарзи, может быть достигнуто по-другому? Может быть, временно окрашивает MenuItem.Background?

+0

Ya Я установил фон вместо установки фокуса, и он работает. Но я просто wana no why cross button does not get execute на один клик, он должен работать независимо от фокуса, установленного на другом как @nvoigt сказал – Vishal

+0

Именно так Microsoft решила реализовать «Фокус» в элементах «Меню». Если вы добавите 'Button' с обработчиком' Click', который вызывает 'MenuItem1.Focus();', вы увидите, что это нормальное поведение. После нажатия этой кнопки вы не сможете переместить или закрыть окно при первом нажатии. – Sheridan

+0

Ya..so, я думаю, у меня есть возможность удалить фокус и установить фон элемента menuItem, который будет отображаться так, как будто он сфокусирован. – Vishal

0

У вас возникли проблемы с логической областью, предоставляемой FocusManager. См http://msdn.microsoft.com/en-us/library/aa969768.aspx

здесь связаны проблемы с фокусных областей и объяснение: http://social.msdn.microsoft.com/Forums/vstudio/en-US/f5de6ffc-fa03-4f08-87e9-77bbad752033/a-focusscope-nightmare-bug-commands-are-disabled Вы можете работать вокруг этого, установив FocusManager.IsFocusScope ложь в меню, как всегда это будет создались некоторые вопросы юзабилити, как меню лучше работать с собственным логический охват.

Смежные вопросы