WPF窗口,透明背景包含不透明控件

时间:2014-01-30 15:47:33

标签: c# .net wpf user-interface transparency

我有一个具有以下外观的窗口:

enter image description here

然而,我想要的是ButtonWindow中的Grid控件(中间带有文字的灰色控件)的不透明度为1,完全不透明。当我继承这个项目时,不透明度在开头Window标记内的顶层设置为0.75。现在,据我所知,这将自动强制执行所有孩子,并说孩子不能覆盖。

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

我可以根据要求提供代码,但它实际上就像带有windowstyle = none的Window和含有Grid的不透明度.75一样简单,其中包含一些非常基本的Button等控件。

有没有人之前构建过这样的Window,或者对生成一个有什么洞察力?感谢。

3 个答案:

答案 0 :(得分:90)

不是设置窗口的不透明度,而是设置背景的不透明度:

<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>

答案 1 :(得分:1)

如果您创建这样的样式:

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

然后你可以在XAML中为你的按钮引用那些:

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

它不应该继承它的父级的不透明性。

答案 2 :(得分:0)

通过将设计师的不透明度从100%设置为60%(根据需要),也可以实现上述效果。