У меня проблемы с передачей значения перечисления в качестве параметра команды для кнопки в 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