【发布时间】:2015-04-04 04:23:16
【问题描述】:
我有网格,我想将不透明度设置为 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
我认为这是 Metro 的错误。
【问题讨论】:
-
所以你想让网格透明,但它不是孩子?
-
文本“Under”必须是不可见的,因为它位于文本“Over”之下,但整个 Grid 必须是半透明的
-
这是不透明度的默认行为,即使在 wpf 和 silverlight 中也是如此。网格的每个子项的不透明度都将乘以它的父项不透明度。
0.5 * 1在这种情况下。也许您可以添加一个边框控件作为第一个子控件,然后用它来做透明度。 -
我将网格替换为边框,但没有任何改变。我还添加了 WPF 的屏幕截图。
-
我不是这个意思。我的意思是添加一个额外的边框作为网格的第一个子元素,而不将内容放在边框中。
标签: c# microsoft-metro winrt-xaml opacity children