【发布时间】:2018-05-18 09:47:44
【问题描述】:
我正在开发为数据库中的每一行创建一个新的 wpf 边框组件的应用程序。这意味着我必须在 C# 而不是 XAML 中设置边框组件的样式(据我所知)。除了尝试设置背景不透明度之外,样式都很好。
motherboards.Add(new Border());
Border moboBorder = motherboards[i];
moboBorder.Width = 150;
moboBorder.Height = 150;
moboBorder.BorderBrush = Brushes.Black;
moboBorder.Background = Brushes.White;
moboBorder.CornerRadius = new CornerRadius(10);
moboBorder.Margin = new Thickness(5);
moboBorder.BorderThickness = new Thickness(1);
您可以像这样在 XAML 中调整背景不透明度
<Border BorderThickness="1" Height="100" Width="100">
<Border.BorderBrush>
<SolidColorBrush Color="Black" Opacity="0.7"/>
</Border.BorderBrush>
</Border>
但正如我所说,我是在 C# 而不是 XAML 中创建组件。我想这就是你在 c# 中设置值的方式
moboBorder.Background.Opacity = //Value
但是,我无法弄清楚它需要什么样的值,而不仅仅是一个直接的数字,没有什么比我能看到的刷子和 = new Opacity() 之类的东西
我试过用谷歌搜索,但一切都是为了设置整个元素的不透明度,而不仅仅是它的背景。
【问题讨论】:
-
在
0.0和1.0之间不是需要double吗? -
@GeoffJames 这就是我的想法,但没有说它是只读的:i.imgur.com/VEkaW9I.png
-
@nomicron 您无法在画笔上设置 opacity 属性。你可以创建一个新的画笔:
Background = new SolidColorBrush(((SolidColorBrush)Background).Color) { Opacity = 0.5 }; -
所以你不能设置它,因为它是
readonly。那是因为您正在尝试将Brush. You need to set theBackground 的Opacity设置为Brush和您想要的Opacity -
对于任何未来的读者(和潜在的评论支持者),请注意说您“一旦使用画笔就不能在画笔上设置不透明度属性”是错误的。你可以很好地做到这一点,只要画笔没有被冻结。 Brushes 类的成员被冻结,因此无法更改(无论它们是否正在使用)。