Как в WPF создать диалоговое окно (т. е. серый фон без рамки вокруг клиентской области)?

Я пытаюсь создать простое диалоговое окно в WPF. Однако в этом конкретном случае я не хочу, чтобы у клиентской области была граница или даже фон. Я просто хочу, чтобы мои элементы управления отображались на фоне окна, как это делается с простым MessageBox.

Я играл с разными значениями для WindowStyle, но все они вызывали клиентскую область цветом. Я также попытался просто установить прозрачность Background клиента, но это не сработало, просто отобразив его черным цветом.

Вот дерьмовая работа Photoshop, показывающая, что мне нужно:

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

Нет клиентской области

Как видите (вернее, не видите), видимой границы клиентской области нет.

Раньше это было так просто в WinForms, но WPF поставил меня в тупик. Кто-нибудь?


person Mark A. Donohoe    schedule 04.08.2011    source источник
comment
Становится теплее... archive.msdn.microsoft.com/WPFShell   -  person Mark A. Donohoe    schedule 04.08.2011
comment
Теплее.... codeproject.com/KB/WPF/CustomFrames.aspx (Ну... вроде. Это для хрома, тогда как я хочу скрыть клиентскую область, но это дает мне некоторые идеи...)   -  person Mark A. Donohoe    schedule 04.08.2011
comment
Является ли типичный старый стиль окна сообщений для диалогового окна WPF тем, что вам нужно? stackoverflow.com/questions/5289328/wpf-messagebox-window-style .. это поможет?   -  person WPF-it    schedule 04.08.2011
comment
Но это все еще ясно показывает клиентскую зону! У вас есть серая рамка, затем у вас есть белая/светло-серая клиентская область. То, что я ищу, если вы используете этот пример, это просто серая "рамка", покрывающая всю область... не белая или светло-серая. Просто темнота. Я добавил скриншот выше того, что я имею в виду.   -  person Mark A. Donohoe    schedule 04.08.2011
comment
Посмотрите на расширение стекла в клиентскую область Расширение рамки стекла в приложение WPF   -  person    schedule 31.10.2012


Ответы (1)


Я не уверен, что вы ищете. Вы хотите, чтобы были видны только элементы управления диалогового окна с прозрачными границами и фоном диалогового окна? Если это так, попробуйте эти настройки в диалоговом окне:

WindowStyle="Нет"
ShowInTaskbar="False"
AllowsTransparency="True"
Background="Прозрачный"

Если вы хотите, чтобы цвет фона вашего диалогового окна был Winform System.Control без рамки, установите Background вашей формы следующим образом (вместо Transparent):

Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
person Jay Riggs    schedule 04.08.2011
comment
Неа! Все еще рисует границу вокруг клиентской области, так что это не то, что я хочу. Я хочу, чтобы элементы управления отображались, если они находятся непосредственно на фоне окна, а клиентская область вообще не видна. - person Mark A. Donohoe; 04.08.2011