3

我有网格,我想将不透明度设置为 50%。当我设置父元素的不透明度时,一些子控件在其他控件下可见。这仅发生在 Metro 应用程序中。

请告诉我如何应用不透明度,类似于它在 WPF 中的工作方式。我举一个简化的例子。就我而言,XAML 非常复杂,因此 Grid 的颜色 #80000000 不是解决方案。

我使用多层用户控件。当我将不透明度设置为它时,我会看到每一层,但用户控件内的层不应该彼此透明。

<Grid Background="Black"
      Opacity="0.5">
    <Border Background="Red"
            Opacity="1">
        <TextBlock Text="Under"
                   FontSize="100" />
    </Border>
    <Border Background="Yellow"
            Opacity="1">
        <TextBlock Text="Over"
                   FontSize="100" />
    </Border>
</Grid>

它在 Metro 中的工作原理:http: //i.stack.imgur.com/EM9oJ.png

它在 WPF 中的工作原理(需要):http: //i.stack.imgur.com/tRGxi.png

例如,当我为我的书设置 Opacity="0.5" 时,页面也变得半透明:http://i.stack.imgur.com/SvG0d.png

我认为这是地铁中的错误。

4

1 回答 1

1

在您的网格上设置 CacheMode="BitmapCache"。此行为不再是默认行为。

可能的原因是旧的行为需要将半透明元素渲染到需要更多内存和两次渲染通道的单独表面,而新的默认行为不需要,因此应该更快,更少的硬件限制并且仍然适用于许多如果不是大多数情况。

于 2015-04-03T18:24:53.387 回答