2009-07-30 8 views
1

Beim Festlegen von Farben in XAML in Silverlight stehen eine Vielzahl von Farben zur Verfügung, aber die Optionen scheinen beim programmgesteuerten Festlegen von Farben eingeschränkt zu sein.Zugriff auf alle Farben von WPF, aber in Silverlight

Zum Beispiel in Silverlight XAML kann ich einen Hintergrund zu „Alice Blue“, „Antique White“ gesetzt usw.

Aber wenn ich versuche, den gleichen Hintergrund im einzustellen Code-behind, ich bin begrenzt auf eine ziemlich endliche Reihe von Farben basierend auf der Colors Klasse ... Schwarz, Blau, Braun ... Weiß, Gelb. Diese kommen ins Spiel, mit so etwas wie:

uxPanel.Background = new SolidColorBrush (Colors.Green); 

Ich weiß, dass ich jede Farbe einstellen kann ich über RGB-Werte möchten, wie in (wo colorsString ist so etwas wie „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); 

Aber wie kann ich auf die größere Vielfalt von Farbnamen zurückgreifen, auf die in XAML oder über einen Stil zugegriffen werden kann, aber programmatisch in meinem Code-Behind? Oder ist das in Silverlight nicht möglich?

+0

Ich sehe keinen Unterschied in WPF beide Aufzählungen [Farben] und [Brushes] sind ziemlich gleich. Ich habe SL nicht überprüft. –

+0

Ja, Sie haben Recht auf Silverlight –

Antwort

1

Ich bin mir nicht sicher, ob ich die Frage verstehe. In meinem Code-behind in XAML kann ich Farben wie „Antique White“ Zugriff über die Farben:

var c = Colors.AntiqueWhite; 

Es ist nicht ein anderer Satz von Farben von denen, die Sie in XAML zugreifen können.

Farben wie AntiqueWhite sind verfügbar, ob ich System.Drawing.Color oder System.Windows.Media.Colors referenziere.

bearbeiten

So sieht es aus wie Sie speziell über die System.Windows.Media.Colors class in Silverlight sprechen, die man in der Tat nur mit einer begrenzten Anzahl von Farben nicht geben zu arbeiten. Wie seltsam!

Ich denke, die einfachste Sache ist es, Ihre eigene Klasse mit den ARGB-Werten aus der MSDN documentation on the WPF version zu definieren. Etwas wie:

public static class ExtraColors 
{ 
    private static Color _antiqueWhite = Color.FromArgb(0xFF, 0xFA, 0xEB, 0xD7); 
    // etc 

    public static Color AntiqueWhite { get { return _antiqueWhite; } } 
    // etc 
} 

Peinlich, ich weiß, aber es wird zumindest Sie einen lesbaren Code zugänglichen Liste dieser zusätzlichen Farben.

+0

Seine Frage bezieht sich auf Silverlight ich denke. In Silverlight Colors Aufzählung ist begrenzt auf Code hinter –

+0

Oh wow - du hast Recht. http://msdn.microsoft.com/en-us/library/system.windows.media.colors_members(VS.95).aspx –

+0

Oh, Entschuldigung. Ich wusste nicht, dass es einen Unterschied in den zugänglichen Farben zwischen WPF und Silverlight gab. Ich werde die Frage erneut eingeben. –

2

Jemand bei silverlight.net posted code, um die XAML-Farben in C# neu zu erstellen.

+0

Danke für den Link. Du hast mir gerade eine Menge Zeit gespart. –

+0

Great Link, fand eine archivierte Version davon: http://web.archive.org/web/20090802111212/http://silverlight.net/forums/p/13225/43867.aspx – ShawnFeatherly

Verwandte Themen