Feedback

C# - WPF Markup Erweiterung für Enumerationswerte

Veröffentlicht von am 05.11.2015
(1 Bewertungen)
Hinweis: Dieses Snippet nimmt nicht am Wettbewerb teil!

Dieses Snippet ist eine Markup Erweiterung für WPF um eine Eigenschaft mit den Werten einer Enumeration zu befüllen.

Benötigte Namespaces
System
System.Windows.Markup

Verwendung
<ComboBox ItemsSource="{local:EnumSource HorizontalAlignment}"/>
GFU-Schulungen  [Anzeige]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

/// <summary>
/// Stellt eine Markup Erweiterung bereit die die Elemente einer Enumeration zurück gibt.
/// </summary>
public class EnumSource : MarkupExtension
{
    /// <summary>
    /// Erstellt eine neue Instanz der <see cref="EnumSource"/>-Klasse.
    /// </summary>
    /// <param name="enumType">Der Typ der Enumeration der verwendet werden soll.</param>
    /// <exception cref="ArgumentNullException">Wird ausgelöst, wenn <paramref name="enumType"/> <c>null</c> ist.</exception>
    /// <exception cref="NotSupportedException">Wird ausgelöst, wenn <paramref name="enumType"/> nicht der Typ einer Enumeration ist.</exception>
    public EnumSource(Type enumType)
    {
        if (enumType == null)
        {
            throw new ArgumentNullException(nameof(enumType), $"The {nameof(enumType)} parameter must be the type of an enum.");
        }
        if (!enumType.IsEnum)
        {
            throw new NotSupportedException($"The passed type in the {nameof(enumType)} parameter is not an enum");
        }

        EnumType = enumType;
    }

    /// <summary>
    /// Ruft den Enumerationstyp ab dessen Member aufgelistet werden sollen.
    /// </summary>
    public Type EnumType { get; private set; }

    /// <summary>
    /// Ruft die Member von <see cref="Enumtype"/> ab.
    /// </summary>
    /// <param name="serviceProvider">Wird in dieser Implementierung nicht benötigt.</param>
    /// <returns>Die Member von <see cref="Enumtype"/>.</returns>
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Enum.GetValues(EnumType);
    }
}
Abgelegt unter XAML, Extension, Markup, Enum, Source, ItemsSource.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!