具有包含不透明控件的透明背景的 WPF 窗口

我有一扇窗户,外观如下:

enter image description here

然而,我想要的是,如果 Window的主 Grid中的 Button控件(中间有文本的灰色控件)的不透明度为1,完全不透明。当我继承这个项目的时候,不透明度在顶层被设置为0.75,在开始的 Window标签中。据我所知,这会自动强制所有的孩子都遵守这个规定而且这个规定不能被孩子改写。

那么我如何才能完成透明的背景,但不透明的按钮?到目前为止我发现的唯一方法(作为 WPF 的一个相对新手)是有两个独立的 Windows,一个是透明的背景,另一个没有背景但包含不透明的控件。这是非常可怕的,但我想避免它,如果我可以。

我可以提供代码,如果要求,但它确实是一个简单的 Window与 windows 样式 = 无和不透明度。75包含一个 Grid,其中包含一些非常基本的 Button等控件。

有人建立这样一个 Window之前或以其他方式有洞察力生成一个? 谢谢。

107351 次浏览

If you create a style like this:

<Window.Resources>
<Style TargetType="Button" x:Key="WindowButtons">
<Setter Property="Opacity" Value="1"/>
</Style>
</Window.Resources>

Then you can reference those in the XAML for your button like this:

<Button Style="{StaticResource WindowButtons}">Tony</Button>

And it should no longer inherit it's opacity from its parent.

Instead of setting the opacity of the window, set its background's opacity:

<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
AllowsTransparency="True" WindowStyle="None">
<Window.Background>
<SolidColorBrush Opacity="0.5" Color="White"/>
</Window.Background>
<Grid>
<Button Width="200" Height="50">button</Button>
</Grid>
</Window>

Above effect can also be achieved by setting Opacity from designer from 100% to 60%(as required).