c# - 包含不透明控件的透明背景的WPF窗口




.net user-interface (2)

这个问题在这里已有答案:

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

然而,我想要的是,如果Window主控GridButton控件(中间带有文本的灰色控件)的不透明度为1,则完全不透明。 当我继承这个项目时,不透明度在顶层设置为0.75,在打开的Window标签内。 现在据我了解,这将自动强制执行所有孩子,并说孩子不能覆盖。

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

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

有没有人建立过这样的Window ,或者有其他人对生成Window有所了解? 谢谢。


如果您创建这样的样式:

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

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

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

并且它不应该再从它的父级继承它的不透明性。


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

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




transparency