Ищите хорошее решение WPF для прозрачного наложения с переходом по клику - PullRequest
10 голосов
/ 07 октября 2010

Я хочу попробовать что-то другое, и я пытаюсь отобразить наложение поверх моего текущего WPF GUI, которое позволяет пользователю по-прежнему взаимодействовать с GUI, но предоставляет уровень раздражения, чтобы сообщить им, что что-то не так.

Мой вопрос действительно состоит из двух отдельных вопросов:

1.Как бы вы сделали наложение?

Моя первая попытка состояла в том, чтобы использовать прямоугольник, установить заливку на соответствующий цвет, а затем изменить непрозрачность.Но это не прозрачно для переходов по ссылкам.Таким образом, я думаю, что я хочу сделать, в соответствии с результатами поиска, создать отдельное окно, установить его фон для прозрачного, а затем установить для параметра AllowsTransparency значение True.Хотя это работает, если я хочу сделать что-то вроде Background="DarkRed" Opacity="0.2", клики больше не работают .

И это приводит меня ко второй части:

2.Как правильно изменить размер этой области наложения, если я использую MVVM?

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

1 Ответ

19 голосов
/ 07 октября 2010

Для адресации части 1: установите IsHitTestVisible="False" на оверлей, будь то прямоугольник, граница или какой-либо другой элемент. Это позволит вам выбрать нужный цвет и уровень прозрачности, не влияя на взаимодействие с базовыми элементами управления.

Часть 2: вы не должны использовать отдельное окно. Если вы сохраняете оверлей в главном окне, вы можете полагаться на макет в своем представлении для автоматической обработки размеров оверлея.

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