Feedback

Windows Phone: Color/Brush aus string

Sprache: C#

Manchmal möchte man vielleicht einen Farbnamen oder einen Farbcode in ein Color oder Brush-Objekt konvertieren, so wie es im XAML geht. Unter WPF könnte man einen Typkonverter nutzen, dieser ist aber unter Windows Phone nicht verfügbar. Das Einfachste ist darum den XamlReader für sich arbeiten zu lassen. [b]Benötigte Namespaces[/b] System.Windows.Markup System.Windows.Media [b]Getestete Plattformen[/b] Windows Phone 8 im VS 2012 Simulator Folgendes Snippet zeigt den Weg über einen Typconverter in WPF: http://dotnet-snippets.de/snippet/string-to-solidcolorbrush/3861
/// <summary>
/// Konvertiert eine Zeichenfolge in ein <see cref="System.Windows.Media.Color"/>-Objekt.
/// </summary>
/// <param name="colorName">Der Name oder Code der Farbe.</param>
/// <returns>Ein <see cref="System.Windows.Media.Color"/>-PObjekt mit dem Farbwert von <paramref name="colorName"/>.</returns>
public Color StringToColor(string colorName)
{
    string xaml = "<Color xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >" + colorName + "</Color>";
    return (Color)XamlReader.Load(xaml);
}
/// <summary>
/// Konvertiert eine Zeichenfolge in ein <see cref="System.Windows.Media.SolidColorBrush"/>-Objekt.
/// </summary>
/// <param name="colorName">Der Name oder Code der Farbe.</param>
/// <returns>Ein <see cref="System.Windows.Media.SolidColorBrush"/>-PObjekt mit dem Farbwert von <paramref name="colorName"/>.</returns>
public SolidColorBrush StringToBrush(string colorName)
{
    string xaml = "<SolidColorBrush xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >" + colorName + "</SolidColorBrush>";
    return (SolidColorBrush)XamlReader.Load(xaml);
}
/// <summary>
/// Konvertiert eine Zeichenfolge in ein <see cref="System.Windows.Media.Color"/>-Objekt.
/// </summary>
/// <param name="colorName">Der Name oder Code der Farbe.</param>
/// <returns>Ein <see cref="System.Windows.Media.Color"/>-PObjekt mit dem Farbwert von <paramref name="colorName"/>.</returns>
public Color StringToColor(string colorName)
{
    string xaml = "<Color xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >" + colorName + "</Color>";
    return (Color)XamlReader.Load(xaml);
}
/// <summary>
/// Konvertiert eine Zeichenfolge in ein <see cref="System.Windows.Media.SolidColorBrush"/>-Objekt.
/// </summary>
/// <param name="colorName">Der Name oder Code der Farbe.</param>
/// <returns>Ein <see cref="System.Windows.Media.SolidColorBrush"/>-PObjekt mit dem Farbwert von <paramref name="colorName"/>.</returns>
public SolidColorBrush StringToBrush(string colorName)
{
    string xaml = "<SolidColorBrush xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >" + colorName + "</SolidColorBrush>";
    return (SolidColorBrush)XamlReader.Load(xaml);
}