3

グリッドがあり、不透明度を 50% に設定したいと考えています。親要素の不透明度を設定すると、一部の子コントロールが他のコントロールの下に表示されます。これは Metro アプリケーションでのみ発生します。

WPF での動作と同様に不透明度を適用する方法を教えてください。簡単な例を挙げます。私の場合、XAML は非常に複雑なので、グリッドの色 #80000000 は解決策ではありません。

多層ユーザー コントロールを使用します。Opacity を設定すると、各レイヤーが表示されますが、ユーザー コントロール内のレイヤーは互いに透明であってはなりません。

<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

これはMetroのバグだと思います。

4

1 に答える 1

1

Grid で CacheMode="BitmapCache" を設定します。この動作はデフォルトではなくなりました。

考えられる理由は、以前の動作では半透明の要素を別のサーフェスにレンダリングする必要があり、より多くのメモリと 2 つのレンダー パスが必要でしたが、新しいデフォルトではそうではなく、したがってより高速で、ハードウェアの制約が少なく、多くの場合でも機能するはずです。ほとんどの場合ではありません。

于 2015-04-03T18:24:53.387 に答える