У меня есть требование построить псевдомодальные диалоги в WPF. То есть по некоторым конкретным (техническим) причинам программное обеспечение не разрешено создавать модальные диалоги. Вместо этого пользователь должен взаимодействовать с «встроенными» модальными диалогами, когда это необходимо.Как отключить события клавиатуры и мыши в части визуального дерева без использования IsEnabled?
Я нашел решение, которое хорошо работает с MVVM и заботится о диспетчере и синхронном характере модальных диалогов. Тем не менее, я столкнулся с проблемой отключения пользовательского ввода в фоновом графическом интерфейсе. Установка всех элементов управления на IsEnabled = false, к сожалению, неприемлемо, поскольку он изменяет визуальное состояние элементов управления фоном (оттенки серого -> плохая читаемость).
Есть ли прямой способ отключить ввод пользователя (включая фокус и клавиатуру) в фоновом режиме без изменения визуального состояния?
Благодарим за помощь!
Благодарим за отзыв! К сожалению, добавление прозрачного слоя в приложение - это только половина решения (вот где я сейчас). Моя проблема - отключить фокус клавиатуры в слое под прозрачным слоем. Можно использовать вкладки для элементов управления, которые находятся ниже прозрачной поверхности :-) –
Вы можете установить свойства IsTabStop и Focusable в false на своих элементах управления, чтобы получить это поведение ... хотя, я беспокоюсь, что это решение не очень элегантно. – exclsr