I am trying to bind WPF ComboBox to a collection of enum values using MarkupExtension from this answer https://stackoverflow.com/a/4398752/964478
It works fine for {Binding Source={my:Enumeration {x:Type my:Status}}} but I want to use a collection of Enum values instead of all values.
    public IList<Status> Statuses
    {
        get
        {
            return new[]
            {
                Status.Available,
                Status.Away
            };
        }
    }
I added a constructor for that
  public class EnumerationExtension : MarkupExtension
  {
       private Type _enumType;
        private Enum[] _enumValues;
        public EnumerationExtension(IEnumerable<Enum> enumValues)
        {
            _enumValues = enumValues.ToArray();
            EnumType = _enumValues.First().GetType();
        }
        //public EnumerationExtension(Type enumType)
        //{
        //    if (enumType == null)
        //        throw new ArgumentNullException(nameof(enumType));
        //    EnumType = enumType;
        //}
        public Type EnumType
        {
            get { return _enumType; }
            private set
            {
                if (_enumType == value)
                    return;
                var enumType = Nullable.GetUnderlyingType(value) ?? value;
                if (enumType.IsEnum == false)
                    throw new ArgumentException("Type must be an Enum.");
                _enumType = value;
            }
        }
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var enumValues = _enumValues ?? Enum.GetValues(EnumType);
            return (
              from object enumValue in enumValues
              select new EnumerationMember
              {
                  Value = enumValue,
                  Description = GetDescription(enumValue)
              }).ToArray();
        }
        private string GetDescription(object enumValue)
        {
            var descriptionAttribute = EnumType
              .GetField(enumValue.ToString())
              .GetCustomAttributes(typeof(DescriptionAttribute), false)
              .FirstOrDefault() as DescriptionAttribute;
            return descriptionAttribute != null
              ? descriptionAttribute.Description
              : enumValue.ToString();
        }
        public class EnumerationMember
        {
            public string Description { get; set; }
            public object Value { get; set; }
        }
    }
But when I try something like this
ItemsSource="{Binding Source={my:Enumeration Statuses}}" 
I get NullReferenceException somewhere in InitializeComponent
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.GetConverterInstance[TConverterBase](XamlValueConverter`1 converter)
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateObjectWithTypeConverter(ServiceProviderContext serviceContext, XamlValueConverter`1 ts, Object value)
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateFromValue(ServiceProviderContext serviceContext, XamlValueConverter`1 ts, Object value, XamlMember property)
   at MS.Internal.Xaml.Runtime.PartialTrustTolerantRuntime.CreateFromValue(ServiceProviderContext serviceContext, XamlValueConverter`1 ts, Object value, XamlMember property)
   at System.Xaml.XamlObjectWriter.Logic_CreateFromValue(ObjectWriterContext ctx, XamlValueConverter`1 typeConverter, Object value, XamlMember property, String targetName, IAddLineInfo lineInfo)
   at System.Xaml.XamlObjectWriter.Logic_ConvertPositionalParamsToArgs(ObjectWriterContext ctx)
   at System.Xaml.XamlObjectWriter.WriteEndMember()
   at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
   at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at MvvmLight3.MainWindow.InitializeComponent() in \MainWindow.xaml:line 1
   at MvvmLight3.MainWindow..ctor() in \MainWindow.xaml.cs:line 16
 
     
     
    