将不透明度设置为网格会更改窗口8中子控件之间的不透明度

本文关键字:不透明度 之间 窗口 控件 设置 网格 | 更新日期: 2023-09-27 18:29:54

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

请告诉我如何应用不透明度类似于它在WPF中的工作方式。我举一个简单的例子。在我的例子中,XAML非常复杂,所以网格的颜色#8000000不是一个解决方案。

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

<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中的工作方式:https://i.stack.imgur.com/EM9oJ.png

它在WPF中的工作方式(所需):https://i.stack.imgur.com/tRGxi.png

例如,当我为我的书设置"不透明度"="0.5"时,页面也会变成半透明的:http://I.stack.imgur.com/SvG0d.png

我认为这是Metro中的错误。

将不透明度设置为网格会更改窗口8中子控件之间的不透明度

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

可能的原因是,将半透明元素渲染到一个单独的曲面所需的旧行为需要更多的内存和两次渲染过程,而新的默认行为则不需要,因此应该更快、更少的硬件约束,并且即使在大多数情况下也仍然适用。