將Enum的內容Binding到Combobox的itemssource
參考網址如下
https://www.c-sharpcorner.com/article/bind-combobox-with-enum-using-objectdataprovider-wpf-mvvm/
- 預設enum內容如下:
public enum 加工項目類別
{
[Description("G01")]
G01Test,
}
- 新增static function for enum get Description 如下:
此方法可取得enum設定的Description 內容
public static string GetEnumDescription<T>(this T source)
{
FieldInfo fi = source.GetType().GetField(source.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0) return attributes[0].Description;
else return source.ToString();
}
將Enum的內容Binding到Combobox的itemssource使用方法如下:
xaml設定新增:
新增Resource:
<Page.Resources>
<ObjectDataProvider x:Key="dataFromEnum"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="model:加工項目類別"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Page.Resources>
解釋:
x:Key="dataFromEnum" => 命名該resource方便以後使用
MethodName="GetValues" => GetValues方法
ObjectType="{x:Type sys:Enum}" => 使用Enum 類型
TypeName="model:加工項目類別" = > 你的enum名稱
沒有留言:
張貼留言