Не уверен, что правильно понимаю ваше требование ... это то, что вы хотите?
CommandParameter="{Binding Path={x:Static local:TestEnum.First}}"
РЕДАКТИРОВАТЬ: хорошо, я думаю, что я понимаю сейчас ... Если вы хотите, чтобы значения перечисления какItemsSource
, вы могли бы сделать это с ObjectDataProvider
, но есть лучший способ: написать расширение разметки, которое принимает тип перечисления и возвращает значения.
Расширение разметки
[MarkupExtensionReturnType(typeof(Array))]
public class EnumValuesExtension : MarkupExtension
{
public EnumValuesExtension()
{
}
public EnumValuesExtension(Type enumType)
{
this.EnumType = enumType;
}
[ConstructorArgument("enumType")]
public Type EnumType { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Enum.GetValues(EnumType);
}
}
XAML
<MenuItem ItemsSource="{my:EnumValues EnumType=my:TestEnum}" Name="menu">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding}" />
<Setter Property="Command" Value="{Binding SomeCommand, ElementName=menu}" />
<Setter Property="CommandParameter" Value="{Binding}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>