XAML 中有没有办法从具有不同自定义透明度级别的命名颜色创建颜色对象?例如
<Label Background="{SkyBlue;220}" />
我知道这行不通,但只是想举个例子。
最佳答案
你自己找到答案的时候之一。这是任何 future 读者的正确方法:
<Label.Background>
<SolidColorBrush Color="SkyBlue" Opacity=".9" />
</Label.Background>
Opacity
范围在 0 和 1 之间,1 表示完全不透明(不透明)。编辑
关于@Dai 的评论,此方法确实不会重置或覆盖指定颜色的透明度级别,以防您引用已经设置了一些透明度的颜色资源。例如,如果您的资源颜色是
SkyBlue
透明度设置为0.5,现在你想把它设置为0.7,上面的方法不能直接工作。要处理这种情况,您需要做的就是创建一个小
Converter
重置输入颜色的 alpha 分量。像这样的东西:public class NoTransparencyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var C = ((Color)value);
return Color.FromArgb(0xFF, C.R, C.G, C.B);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
然后在您的 XAML 中使用它:
<SolidColorBrush Color="{Binding Path="YOUR_COLOR_RESOURCE" Converter={x:Static NoTransparencyConverter}}" Opacity=".9" />
关于wpf - 在 XAML 中指定命名颜色的透明度级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114651/