2009-07-30 92 views
1

在Silverlight中設置XAML中的顏色時有各種各樣的顏色,但在以編程方式處理顏色時,選項似乎有限。訪問所有WPF的許多顏色,但在Silverlight中

例如,在Silverlight XAML我可以設置背景,以「愛麗絲藍」,「白仿古」等

但是,如果我嘗試設置在同一背景代碼隱藏,我僅限於基於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

我無法看到WPF中的任何區別[顏色]和[刷子]枚舉幾乎相同。雖然我沒有檢查SL。 – 2009-07-30 00:46:28

+0

是的,你是對的Silverlight – 2009-07-30 00:48:30

回答

1

我不確定我是否理解這個問題。在我的XAML代碼隱藏我可以訪問的色彩,如「古董白」通過顏色對象:

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 
} 

彆扭,我知道,但它至少會得到你的那些多餘的顏色可讀的代碼訪問的列表。

+0

他的問題是指Silverlight我猜。在Silverlight中,顏色枚舉僅限於 – 2009-07-30 00:52:52

+0

後面的代碼哦,哇 - 你是對的。 http://msdn.microsoft.com/en-us/library/system.windows.media.colors_members(VS.95).aspx – 2009-07-30 00:56:47

+0

哦,對不起。我沒有意識到WPF和Silverlight之間的可訪問顏色有差異。我會重新標記問題。 – 2009-07-30 01:01:17

2

有人在silverlight.net posted code在C#中重新創建XAML顏色。

+0

感謝您的鏈接。你爲我節省了很多時間。 – 2009-07-30 01:13:36

+0

偉大的鏈接,找到它的存檔版本:http://web.archive.org/web/20090802111212/http://silverlight.net/forums/p/13225/43867.aspx – ShawnFeatherly 2013-05-10 23:12:40