以下两种方法是我自己都测试过的
方法1:通过继承MarkupExtension
步骤1:新建一个类
MarkupExtensionReturnType(typeof(object[]))]
publicclassEnumValuesExtension:MarkupExtension
{
publicEnumValuesExtension()
{
}
publicEnumValuesExtension(Type enumType)
{
this.EnumType= enumType;
}
[ConstructorArgument("enumType")]
publicTypeEnumType{get;set;}
publicoverrideobjectProvideValue(IServiceProvider serviceProvider)
{
if(this.EnumType==null)
thrownewArgumentException("The enum type is not set");
returnEnum.GetValues(this.EnumType);
}
}
步骤2:在xaml中引用 xmlns:mymeun="clr-namespace:WpfMipLibrary.Util;assembly=WpfMipLibrary"
最后使用:
<my1:CaComboBox Name="cmbmateria" ItemsSource="{mymeun:EnumValues vm:MateriaAppType}" />
方法二:直接使用
Array materialist = Enum.GetValues(typeof(MateriaAppType));
cmbmateria1.ItemsSource = materialist;
方法二很简单,一句话而已,但是效果和方法一是一样的