Как добавить место для элемента внутри ComboBox в UWP?

У меня есть ComboBox, привязанный к некоторому типу перечисления. Мне интересно, как добавить место для элементов перечисления. Пытался использовать конвертер, но не получилось. Тип перечисления такой

public enum MaxEEAge
{
    TwoWeeks = 0,
    OneMonth = 1,
    ThreeMonths = 2,
    SixMonths = 3,
    All = 4,
}

Я хочу, чтобы в ComboBox отображалось что-то вроде "Две недели" вместо "Две недели".


person litaoshen    schedule 18.08.2016    source источник


Ответы (2)


У вас есть несколько вариантов,

Добавьте атрибут [Description] и при необходимости загрузите его:

[Description("Two weeks")]
TwoWeeks = 0

or

Реализуйте какой-нибудь метод, например ObjectNames.NicifyVariableName в Unity.

person aybe    schedule 18.08.2016
comment
Добавление [Description], похоже, не работает в моем случае, но я создаю класс, содержащий строку перечисления и описания, и пишу преобразователь для достижения тех же эффектов. Используйте коллекцию вместо перечисления. Спасибо! - person litaoshen; 23.08.2016

Используйте коллекцию вместо перечисления, как это

    public class MaxXXAgeMembers
        {
            public MaxXXAge MaxXXAge { get; private set; }
            public string Description { get; private set; }

            public static readonly IReadOnlyList<MaxXXAgeMembers> Options = new ReadOnlyCollection<MaxXXAgeMembers>(new[]
            {
                new MaxXXAgeMembers { MaxXXAge =  MaxXXAge.OneDay, Description = Strings.SettingSync_OneDay},
.......
            });

            public static MaxXXAgeMembers FromMaxXXAge(MaxXXAge maxXXAge)
            {
                return Options.First(option => option.MaxXXAge == maxXXAge);
            }
        }

Напишите свой собственный конвертер, используя FromMaxXXAge, этого было бы легко добиться.

Привязать к этому

public IReadOnlyList<MaxXXAgeMembers> MaxXXAgeMemberGroup { get { return MaxXXAgeMembers.Options; } }
person litaoshen    schedule 23.08.2016