当前位置:  开发笔记 > 编程语言 > 正文

如何在XAML中使用给定枚举中的所有项填充WPF组合框?

如何解决《如何在XAML中使用给定枚举中的所有项填充WPF组合框?》经验,为你挑选了3个好方法。

假设我有一个包含四个值的枚举:

public enum CompassHeading
{
    North,
    South,
    East,
    West
}

使用这些项目填充ComboBox需要什么样的XAML?


理想情况下,我不必为此设置C#代码.



1> casperOne..:

您可以使用ObjectDataProvider执行此操作:


    
        
    



我在这里找到了解决方案:

http://bea.stollnitz.com/blog/?p=28



2> Thomas Leves..:

我认为使用ObjectDataProvider来做这件事真的很乏味......我有一个更简洁的建议(是的,我知道,有点晚了......),使用标记扩展:


以下是标记扩展的代码:

[MarkupExtensionReturnType(typeof(object[]))]
public class EnumValuesExtension : MarkupExtension
{
    public EnumValuesExtension()
    {
    }

    public EnumValuesExtension(Type enumType)
    {
        this.EnumType = enumType;
    }

    [ConstructorArgument("enumType")]
    public Type EnumType { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        if (this.EnumType == null)
            throw new ArgumentException("The enum type is not set");
        return Enum.GetValues(this.EnumType);
    }
}



3> rudigrobler..:

以下是如何绑定到WPF中的枚举的详细示例

假设您有以下枚举

public enum EmployeeType    
{
    Manager,
    Worker
}

然后,您可以在代码隐藏中绑定

typeComboBox.ItemsSource = Enum.GetValues(typeof(EmployeeType));

或使用ObjectDataProvider


    
        
    

现在你可以在标记中绑定


另请参阅: 将枚举属性数据绑定到WPF中的ComboBox

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有