我是WPF的新手我有堆栈面板,在这个堆栈面板中我们在代码后面添加了Text Block,并在后面的代码中设置了堆栈面板背景和Text Block前景色。当我设置stackpanel的不透明度而不是影响它的子控件(即Textblock)时,我也设置了不透明度
请为此妥善解决。
谢谢。
答案 0 :(得分:25)
如果您想在Xaml
中执行此操作,可以在SolidColorBrush
处创建Window.Resources
作为面板的背景颜色:
<Window.Resources>
<SolidColorBrush x:Key="TransparentBlue" Color="#00b0f0" Opacity="0.5" />
</Window.Resources>
然后只设置Background
的{{1}}:
...Panel
答案 1 :(得分:1)
将Background
属性设置为可变Brush
(而不是像Brushes.White
那样的不可变属性)。例如,您可以创建SolidColorBrush
:
var background = new SolidColorBrush(Colors.White);
panel.Background = background;
您现在可以稍后在程序中更改该画笔的Opacity
属性。
background.Opacity = 0.5;
您也可以使用GradientBrush
或ImageBrush
等任何其他画笔执行此操作。
答案 2 :(得分:0)
不透明度从元素树下的父元素应用到 子元素,但嵌套不透明度设置的可见效果 未在个别子元素的属性值中指出。 例如,如果列表具有50%(0.5)不透明度和其列表之一 items具有自己的不透明度设置为20%(0.2),净可见不透明度 该列表项目将被渲染为好像它是10%(0.1),但是 列表项的属性值Opacity属性仍为0.2 在查询时。
子控件不能具有父级的不透明度。我认为你将不得不使用两个单独的层,一个具有完全不透明度,另一个具有较少的不透明度。像这样的东西
<Grid>
<StackPanel Opacity=".5" Background="whatever">
...
</StackPanel>
<StackPanel>
<TextBlock Text="Text shown with full Opacity" />
</StackPanel>
</Grid>
答案 3 :(得分:0)
这适用于Xamarin(白色透明色):
Color MyColor = Color.FromRgba(255,255,255,0.8);
Alpha似乎提供了比控件的Opacity属性更好的不透明度。