コレクションにコントロールをバインドする方法WPFで列挙?

今日、Googleのこの問題は、ああ、本当に古典的です外国でのソリューションの多くが見つかりました:

 まず、コンバータを結合することにより:

公共の密封されたクラスEnumToNamesConverterIValueConverter { オブジェクトIValueConverter変換オブジェクトタイプたtargetType オブジェクトパラメータのCultureInfoの培養{ 戻り列挙しますgetNamesメソッドGetType())。} オブジェクトIValueConverterをConvertBackオブジェクトのタイプたtargetType  
 
 
 
 
 
   
 
 
 
 
 
オブジェクトパラメータのCultureInfoの培養{ スロー新しい非サポート例外()} }  
 
 
   
 
 
 
 

 

XAML

<ローカル:EnumToNamesConverter X:キー = "EnumToNamesConverter" />

 

<コンボボックスのItemsSource = "{バインディング                          ソース= {X:タイプローカル:CompassHeading}、                          コンバータ= {StaticResource EnumToNamesConverter}}" />

 

第二に、古典的なああ!相続MarkupExtensionを通じ

 

[ MarkupExtensionReturnTypetypeof演算オブジェクト []))] パブリッククラスEnumValuesExtensionMarkupExtension { パブリックEnumValuesExtension(){ } 公共EnumValuesExtensionタイプ enumType { このEnumType = enumType } [ ConstructorArgument"enumType")] パブリックタイプEnumType { 得ますセット ; } 
 
 
   
 
   
 
   
 
 
   
 
   
 
       
 
   
 
 
   
 
   
 
 
   
公共オーバーライドオブジェクトProvideValueIServiceProviderサービス・プロバイダ{ 場合これEnumType == nullのスロー新しいArgumentExceptionがする"列挙型が設定されていません"); 返す列挙型をでgetValuesこれEnumType); } }  
   
 
       
 
           
 
       
 
   
 
 


XAML

<コンボボックスのItemsSource = "{ローカル:ローカルEnumValues:はEmployeeType}" />  

 

 

ます。https://www.cnblogs.com/sofire/archive/2010/03/19/1690111.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34208185/article/details/92637956