有没有办法制作枚举显示空间和图像?

时间:2016-04-18 05:48:05

标签: c# enums grouping

我在listview中使用enum作为我的组描述,我试图让它显示更多用户友好的文本,但我得到一个错误,它说不能隐含转换类型字符串到Mærke

枚举

public enum Mærke { 
 Alfa_Romeo,
 Audi,
 Aston_Martin__________________________________________________________5x114,
BMW,
 Chervolet,
Chrysler,
Citroën,
Daewoo,
Daihatsu,
Dodge,
Ferrari };
public Mærke mærke { get; set; }

public class biler
{
    public string billed { get; set; }

    public string Model { get; set; }

    public string Type { get; set; }

    public string Årgang { get; set; }

    public string Krydsmål { get; set; }

    public double ET { get; set; }

    public double centerhul { get; set; }

    public string bolter { get; set; }

    public string hjul { get; set; }

    public Mærke mærke { get; set; }



}

列表

  items.Add(new biler() { billed = "img/Biler/aston martin.png", Model = "DB9", Årgang = "03-", Krydsmål = "5x114.3", ET = 62.5, centerhul = 68.1, bolter = "M14x2", mærke = Mærke.Aston_Martin__________________________________________________________________________________________________5x114 });
 CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView (hjuldata.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("mærke");           
view.GroupDescriptions.Add(groupDescription);

how do i get a icon over here?

2 个答案:

答案 0 :(得分:1)

var mærke = Merke.Alfa_Romeo; // example
var withSpaces = mærke.ToString().Replace("_", " ");

这应该为你解决。没有内置任何内容可以这样做,你可以写一个像这样的扩展方法:

public static string WithSpaces(this enum theEnum){
  return theEnum.ToString().Replace("_", " ");
}

然后在代码中使用它:

var mærke = Mærke.Alfa_Romeo.WithSpaces();

答案 1 :(得分:0)

如果这是你正在寻找的,那应该这样做,而对于图片,我认为标题不支持

using System.Reflection;
public static class EnumExtensions
{

    public static string DisplayName(this Enum value)
    {
        FieldInfo field = value.GetType().GetField(value.ToString());

        EnumDisplayNameAttribute attribute
                = Attribute.GetCustomAttribute(field, typeof(EnumDisplayNameAttribute))
                    as EnumDisplayNameAttribute;

        return attribute == null ? value.ToString() : attribute.DisplayName;
    }
}

public class EnumDisplayNameAttribute : Attribute
{
    private string _displayName;
    public string DisplayName
    {
        get { return _displayName; }
        set { _displayName = value; }
    }
}

public enum Mærke 
{
    [EnumDisplayName(DisplayName = "Alfa Romeo 5x114")]
    Alfa_Romeo,

public string mærke { get; set; }
mærke = Mærke.Alfa_Romeo.DisplayName()