Как передать значение перечисления в качестве параметра команды для кнопки в WPF? - PullRequest
0 голосов
/ 12 июня 2018

У меня проблемы с передачей значения перечисления в качестве параметра команды для кнопки в WPF.

Вот мое определение перечисления:

namespace Foo.Foobar
{
    public enum PlanTypes : int
    {
        Undefined = -1,
        Previous = 0, 
        Current = 1,
        Future = 2
    }
}

Вот мой конвертер значений:

public class PlanTypeConverter : MarkupExtension, IValueConverter
{
  public override object ProvideValue(IServiceProvider serviceProvider)
  {
     return this;
  }

  public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  {
      try
      {
          if (value == null)
          {
              return PlanTypes.Undefined;
          }

          int iPlanType = System.Convert.ToInt32(value);
          return (PlanTypes)iPlanType;
       }
       catch (Exception e)
       {
           throw e;
       }
  }
  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  {
      return Convert(value, targetType, parameter, culture);
  }
}

Вот фрагменты из моего определения XAML:

<UserControl x:Class=""
 ...
 xmlns:enums="clr-namespace:Foo.Foobar"
/>

<!-- Value Converters -->
<views:PlanTypeConverter x:Key="PlanTypeConvert"/>

<Button Content="Some Text"
Command="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=DataContext.SelectPlanCommand}" CommandParameter="{Binding Converter={StaticResource PlanTypeConvert}, ConverterParameter={Binding {x:Static enums:PlanTypes.PreviousPlan}}}" />

Компилятор XAML не может разрешитьТип перечисления: PreviousPlan.Во время выполнения VS выдает исключение при попытке решить эту проблему.

Это правильный способ передачи значения перечисления в качестве параметра команды?Мне действительно нужно использовать конвертер значений для этого?

Спасибо, JohnB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...