wpf enum绑定到comcobox控件

以下两种方法是我自己都测试过的

方法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;

方法二很简单,一句话而已,但是效果和方法一是一样的

posted @ 2012-12-06 11:32  星羽  阅读(496)  评论(0编辑  收藏  举报