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 NamespacesSystem
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);
}
}
Kommentare zum Snippet