将不透明度设置为边框会更改内部内容的不透明度

时间:2011-12-20 19:28:33

标签: c# .net xaml opacity

<Border BorderBrush="Black" Background="#AFAFAF" Opacity="0.1" BorderThickness="1">
    <TextBlock Opacity="1" Text="{Binding Story}" Margin="25 15 25 15" Style="{StaticResource content}" Width="600" Foreground="#636363" />
</Border>

我甚至尝试将内部TextBlock的不透明度设置为1来明确设置它,但文本仍然不会保留它的不透明度。

enter image description here

看看文字几乎看不到?我该如何解决这个问题?

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这是因为您Opacity内的Border被设置为0.1 Grid。孩子们继承了opacity setting from there parent

  

不透明度从元素树下的父元素应用到   子元素,但嵌套不透明度设置的可见效果   未在个别子元素的属性值中指出。   例如,如果列表具有50%(0.5)不透明度和其列表之一   items具有自己的不透明度设置为20%(0.2),净可见不透明度   该列表项目将被渲染为好像它是10%(0.1),但是   列表项的属性值Opacity属性仍为0.2   在查询时。

最简单的方法是删除子/父关系,并利用Border之类的布局容器通过模仿Rectangle {{1}来获取您要查找的视图}}

<Grid>
    <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Green"/>
    <TextBlock Background="Red" Margin="8" Text="My Text" Width="Auto" Height="Auto" />
</Grid>

答案 1 :(得分:0)

我认为覆盖继承属性的唯一方法是执行以下操作:This