为Grid应用不透明度并且不申请其子控件

时间:2012-05-17 13:18:01

标签: wpf silverlight xaml

我对Grid应用不透明度 0.75,而Grid的所有子项也采用不透明度

是否可以排除子控件并且不为它们应用不透明度?

谢谢!

XAML

<Grid  x:Name="RootGrid" Opacity="0.75" Visibility="Visible" ClipToBounds="False" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
        <local:MarqueeVer x:Name="marquee1" Duration="30"  ClipToBounds="True"  
                          RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0"
                           VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                          Background="Transparent" Opacity="1">
            <StackPanel   Name="lstItems"   FlowDirection="LeftToRight" Orientation="Vertical"
                         VirtualizingStackPanel.IsVirtualizing="True" 
              VirtualizingStackPanel.VirtualizationMode="Recycling">
            </StackPanel>
        </local:MarqueeVer>


    </Grid>

_更新 _ __

我找到了一些解决方案here但是有任何更简单的解决方案吗?

  

您只需为每种颜色计算正确的Alpha通道。

3 个答案:

答案 0 :(得分:7)

如果您只想更改网格背景的不透明度,则只需在背景图像中设置不透明度= 0.75。

  

但是我将一些画笔应用到网格中?我能做什么呢?

在这种情况下,在画笔中设置不透明度

答案 1 :(得分:2)

要实现此效果,您可以添加Rectangle作为Grid的子项(但作为其他元素的兄弟)并应用Background和{{1}到Opacity。这样,不透明度的变化不会影响Rectangle的其他子项。

Grid

我知道这可能是一个肮脏的解决方案,但它为我做了诀窍。

答案 2 :(得分:0)

你不能让孩子比父母更不透明,但你可以使用不同不透明度的画笔,以达到一些叠加效果。

像这样:

<Window x:Class="stackoverflowviewbox.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">
<Window.Resources>
    <SolidColorBrush Color="White" Opacity=".5" x:Key="WhiteHalfOpacityBrush"/>
</Window.Resources>
<Grid Background="Green">
    <Border BorderThickness="1" BorderBrush="Black" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid Background="{StaticResource WhiteHalfOpacityBrush}">
            <Label>
                Hello world.Hello world.Hello world.Hello world.Hello world.Hello world.
            </Label>
        </Grid>
    </Border>
</Grid>