以下两种方法是我自己都测试过的
方法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;
方法二很简单,一句话而已,但是效果和方法一是一样的