Я хотел знать, как изменить непрозрачность фона окна WPF без использования внутренних дочерних элементов управления. Когда я изменяю свойство Window "Opacity" на 0.5, я получаю полупрозрачное окно, но изображение внутри окна также наследует значение значения непрозрачности 0.5, поэтому как я могу просто сделать непрозрачность только для окна?
Изменение непрозрачности фона без изменения непрозрачности содержимого
Ответ 1
Окно является родительским контейнером всего, поэтому установка непрозрачности в окне будет влиять на все, что он содержит. Я думаю, что вы хотите изменить Opacity
в Window.Background
.
Включение окна для прозрачности включает в себя пару вещей, которые нужно добавить. Сначала вам нужно установить Window.AllowsTransparency = True
, а также установить Window.WindowStyle = None
. WindowStyle.None
создает окно без кнопок минимизации, максимизации и закрытия в окне хром, поэтому вам придется обрабатывать это в приложении самостоятельно, изменяя размер и перемещая окно. После этого все сделанное, вы можете установить для Window.Background
кисть с Opacity
, установленную на ней.
В следующем примере кода будет показано, как всегда окно прозрачно и установить непрозрачность фона окна на другую непрозрачность.
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication1.MainWindow"
x:Name="Window"
WindowStyle="None"
AllowsTransparency="True">
<Window.Background>
<SolidColorBrush Color="White" Opacity="0.5"/>
</Window.Background>
<Grid>
<!--Window Content-->
</Grid>
</Window>
Вы всегда можете установить прозрачность окна фона, если хотите видеть только элементы в окне.