Проблема с обработкой клика по Calendar WPF

185
27 апреля 2018, 11:41

На форме имеется Calendar, когда в нем выбираю дату, то приходится кликать по любому другому элементу или пустому месту, чтобы остальные элементы стали активны.

То есть после выбора даты, активным остается календарь. Как от этого избавиться? Чтобы не приходилось делать лишний клик?

В разметке нет ничего особенного:

<Border Grid.Column="1">
    <Calendar SelectedDate="{Binding SelectedDate}"/>
</Border>

Получается, когда я нажимаю на него и выбираю дату, то курсор двигается, но остальные элементы неактивны (нет даже анимации при наведении на кнопки). Мне приходится делать "пустой" клик, и тогда остальные элементы начинают отвечать.

Answer 1

Дело в том, что Calendar предназначен для размещения его во всевозможных всплывающих элементах (например, таких как DatePicker), поэтому он захватывает (Capture) мышь. Такое же поведение можно наблюдать, например, с ComboBox, если открыть выпадающий список, то первый клик мыши будет закрывать его и только следующий будет обработан целевым элементом.

К счастью, это поведение можно изменить таким кодом:

if (Mouse.Captured is CalendarItem) Mouse.Capture(null);

Вставьте его, например, в обработчик PreviewMouseUp вашего календаря.

READ ALSO
Xamarin доступ к MergedDictionaries из кода

Xamarin доступ к MergedDictionaries из кода

Есть страница, в ней подключаются стили через xaml таким образом:

192
Как вызвать элемент из UseControl?

Как вызвать элемент из UseControl?

На UseControl у меня есть картинка и два эллипса (круга, как угодно), я хочу связать два UseControl на холсте , вывод UseControl на холст сделан, вопрос вот...

168
Обращение к элементам формы

Обращение к элементам формы

Допустим у меня есть 10 textBox ( textBox1, textBox2,

140
Можно ли использовать Menu как ContextMenu?

Можно ли использовать Menu как ContextMenu?

Существует Menu, например такое:

175