半透明背景和不透明的前景wpf

时间:2015-08-19 08:36:25

标签: c# wpf uwp

我目前有以下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>

目前,Opacity上的Grid设置也适用于其子女。

我只希望将此不透明度应用于其背景颜色,以实现变暗效果,而不是前景。我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

使用半透明背景,或者像SolidColorBrush一样使用

<Grid ...>
    <Grid.Background>
        <SolidColorBrush Color="Black" Opacity="0.25"/>
    </Grid.Background>
    ...
</Grid>

或通过在颜色中指定alpha值,例如

<Grid Background="#3F000000" ...>

答案 1 :(得分:0)

诀窍是不要将print "\"" iface "\",\"" if_arr[1] "\",\"" mac "\"" 添加到整个Opacity元素:

Grid

答案 2 :(得分:0)

这对我有用。我有两个网格根网格和RootContent子网格。我控制RootContent的不透明度。 &#34; Root&#34;中的任何控件。不会受到影响。

<Grid x:Name="Root" KeyDown="Root_KeyDown" Tapped="Root_Tapped">
      <!--(Other elements)-->
   <Grid x:Name="RootContent">
          <!--(Other elements)-->
   </Grid>
</Grid>

答案 3 :(得分:-1)

不透明度将始终适用于儿童,所以我倾向于在同一级别使用Canvas来实现这种效果:

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