半透明背景和不透明前景wpf
本文关键字:wpf 不透明 背景 半透明 | 更新日期: 2023-09-27 18:08:52
我目前有以下xaml代码:
<Grid
Name="rootGrid"
Opacity=".25"
Background="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Border
Background="Black"
Margin="120">
<Grid
Background="White"
Margin="8">
<TextBlock
Name="popupContent">
Test
</TextBlock>
<Button
Click="Button_Click">
Test
</Button>
</Grid>
</Border>
</Grid>
目前,Grid
上的Opacity
设置也应用于其子节点。
我只想把这个不透明度应用到它的背景颜色上,以达到变暗的效果,而不是应用在前景上。我该怎么做呢?
使用半透明背景,如SolidColorBrush
<Grid ...>
<Grid.Background>
<SolidColorBrush Color="Black" Opacity="0.25"/>
</Grid.Background>
...
</Grid>
或者在颜色中指定一个alpha值,比如
<Grid Background="#3F000000" ...>
技巧是不要将Opacity
添加到整个Grid
元素:
<Grid>
<Grid.Background>
<SolidColorBrush Color="Black" Opacity=".75"/>
</Grid.Background>
<!--(Other elements)-->
</Grid>
这对我很有效。我有两个网格根网格和RootContent子网格。我控制的不透明度的RootContent。"根"中的任何控制都不会生效。
<Grid x:Name="Root" KeyDown="Root_KeyDown" Tapped="Root_Tapped">
<!--(Other elements)-->
<Grid x:Name="RootContent">
<!--(Other elements)-->
</Grid>
</Grid>
不透明度将始终适用于儿童,所以我倾向于使用相同级别的画布来实现这种效果:
<Grid>
<Canvas Opacity=".25"
Background="Black"/>
<Grid Name="rootGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Border
Background="Black"
Margin="120">
<Grid
Background="White"
Margin="8">
<TextBlock
Name="popupContent">
Test
</TextBlock>
<Button
Click="Button_Click">
Test
</Button>
</Grid>
</Border>
</Grid>
</Grid>