在Silverlight中设置XAML中的颜色时,可以使用多种颜色,但在以编程方式处理设置颜色时,选项似乎有限。
例如,在Silverlight XAML中,我可以将背景设置为“Alice Blue”,“Antique White”等。
但是如果我尝试在代码隐藏中设置相同的背景,我只能基于Colors类来限定一组相当有限的颜色......黑色,蓝色,棕色......白色, 黄色。这些类似于:
uxPanel.Background = new SolidColorBrush (Colors.Green);
我知道我可以通过RGB值设置任何我想要的颜色,例如(其中colorsString类似于“112345”):
var brush = new SolidColorBrush ();
var c = new Color
{
A = 0xFF,
R = Convert.ToByte (colorString.Substring (0, 2), 16),
G = Convert.ToByte (colorString.Substring (2, 2), 16),
B = Convert.ToByte (colorString.Substring (4, 2), 16)
};
brush.Color = c;
return (brush);
但是,我如何利用XAML中可访问的各种颜色名称或通过样式,但在我的代码隐藏中以编程方式设置?或者这在Silverlight中是不可能的?
答案 0 :(得分:2)
有人在silverlight.net posted code重新创建C#中的XAML颜色。
答案 1 :(得分:1)
我不确定我理解这个问题。在我的XAML代码隐藏中,我可以通过Colors对象访问诸如“Antique White”之类的颜色:
var c = Colors.AntiqueWhite;
它与您在XAML中可以访问的颜色不同。
无论我引用System.Drawing.Color还是System.Windows.Media.Colors,都可以使用AntiqueWhite等颜色。
修改强>
所以看起来你正在特别谈论System.Windows.Media.Colors class in Silverlight,它确实只给你一组有限的颜色。多奇怪啊!
我想最简单的方法是使用MSDN documentation on the WPF version中的ARGB值定义自己的类。类似的东西:
public static class ExtraColors
{
private static Color _antiqueWhite = Color.FromArgb(0xFF, 0xFA, 0xEB, 0xD7);
// etc
public static Color AntiqueWhite { get { return _antiqueWhite; } }
// etc
}
我知道,这很尴尬,但它至少可以为您提供可读代码的可读列表。