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}"/>
/// <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!