栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

WPF将ListBox绑定到枚举,显示Description属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WPF将ListBox绑定到枚举,显示Description属性

是的,有可能。这样就可以了。说我们有枚举

public enum MyEnum{    [Description("MyEnum1 Description")]    MyEnum1,    [Description("MyEnum2 Description")]    MyEnum2,    [Description("MyEnum3 Description")]    MyEnum3}

然后我们可以使用ObjectDataProvider作为

xmlns:MyEnumerations="clr-namespace:MyEnumerations"<ObjectDataProvider MethodName="GetValues"     ObjectType="{x:Type sys:Enum}"     x:Key="MyEnumValues">    <ObjectDataProvider.MethodParameters>        <x:Type TypeName="MyEnumerations:MyEnum" />    </ObjectDataProvider.MethodParameters></ObjectDataProvider>

对于ListBox,我们将ItemsSource设置为MyEnumValues,并使用Converter来应用ItemTemplate。

<ListBox Name="c_myListBox" SelectedIndex="0" Margin="8"        ItemsSource="{Binding Source={StaticResource MyEnumValues}}">    <ListBox.ItemTemplate>        <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}"/>        </DataTemplate>    </ListBox.ItemTemplate></ListBox>

在转换器中,我们得到描述并返回

public class EnumDescriptionConverter : IValueConverter{    private string GetEnumDescription(Enum enumObj)    {        FieldInfo fieldInfo = enumObj.GetType().GetField(enumObj.ToString());        object[] attribArray = fieldInfo.GetCustomAttributes(false);        if (attribArray.Length == 0)        { return enumObj.ToString();        }        else        { DescriptionAttribute attrib = attribArray[0] as DescriptionAttribute; return attrib.Description;        }    }    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)    {        Enum myEnum = (Enum)value;        string description = GetEnumDescription(myEnum);        return description;    }    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)    {        return string.Empty;    }}

GetEnumDescription方法可能应该放在其他地方,但您会明白的:)

选中GetEnumDescription作为扩展方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号