Привязать ListBox (или Telerik RadListPicker) к Enum - PullRequest
2 голосов
/ 23 декабря 2011

У меня есть перечисление:

public enum UnitOfMeasure
{
    Meters,
    Kilometers,
    Yards,
    Miles,
    Time
}

и я хочу привязать его к ListBox (на самом деле это Telerik RadListPicker, но он работает так же):

<telerikInput:RadListPicker
    Header="Measure work in:"
    ItemsSource="{Binding WorkUnitOfMeasure}"
    HeaderStyle="{StaticResource HeaderStyle}"
    x:Name="workUnitsListPicker"
    Margin="18">
</telerikInput:RadListPicker>

My View Модель:

/// <summary>
/// The <see cref="WorkUnitOfMeasure" /> property's name.
/// </summary>
public const string WorkUnitOfMeasurePropertyName = "WorkUnitOfMeasure";

private ObservableCollection<Enum<UnitOfMeasure>> _workUnitOfMeasure;
/// <summary>
/// Gets the WorkUnitOfMeasure property.
/// Changes to that property's value raise the PropertyChanged event. 
/// This property's value is broadcasted by the Messenger's default instance when it changes.
/// </summary>
public ObservableCollection<Enum<UnitOfMeasure>> WorkUnitOfMeasure
{
    get
    {
        return _workUnitOfMeasure;
    }
    set
    {
        if (_workUnitOfMeasure == value)
        {
            return;
        }
        var oldValue = _workUnitOfMeasure;
        _workUnitOfMeasure = value;
         RaisePropertyChanged(WorkUnitOfMeasurePropertyName);
    }
}

И в моем конструкторе я пробовал варианты чего-то вроде этого:

WorkUnitOfMeasure = new ObservableCollection<Enum<UnitOfMeasure>>();

Я не могу получить список для привязки к Enum. Я знаю, что упускаю что-то простое, но не могу понять.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Я считаю, что это должно быть

ObservableCollection<UnitOfMeasure>

, а не

ObservableCollection<Enum<UnitOfMeasure>

Если нет, то какую ошибку вы видите?

0 голосов
/ 03 января 2012

Если вы привязываете отдельные элементы перечисления к списку:

Вам может помочь следующий код:

 List<string> newList = new List<string>();
        for (int i = 0; i <= (int)UnitOfMeasure.Time; i++)
            newList.Add(Enum.GetName(typeof(UnitOfMeasure), i));
        SampleList.ItemsSource = newList;
...