Silverlight — привязка к перечислению

#c# #silverlight #data-binding

#c# #silverlight #привязка к данным

Вопрос:

У меня есть поле со списком в приложении C # Silverlight. Моя модель представления имеет свойство, называемое DayOfWeek . Это свойство должно соответствовать стандартному DayOfWeek перечислению .NET.

Есть ли способ, которым я могу заполнить свой combobox значениями этого перечисления? Кроме того, есть ли способ связать это с моей view-model, чтобы выбранное значение передавалось туда и обратно в / из моей viewmodel? Если да, то каким образом?

Ответ №1:

В вашей ViewModel:

 private ObservableCollection<DayOfWeek> _weekDays;

// In the constructor:
_weekDays = new ObservableCollection<DayOfWeek>();
_weekDays.AddRange(new DayOfWeek[] {
    DayOfWeek.Sunday,
    DayOfWeek.Monday,
    DayOfWeek.Tuesday,
    DayOfWeek.Wednesday,
    DayOfWeek.Thursday,
    DayOfWeek.Friday,
    DayOfWeek.Saturday
});

// Properties of your VM:
public ObservableCollection<DayOfWeek> WeekDays
{
    get
    {
        return _weekDays;
    }
}

public DayOfWeek SelectedDay
{
    get;
    set;
}
  

В XAML:

 <ComboBox 
    ItemsSource="{Binding WeekDays}" 
    SelectedItem="{Binding SelectedDay, Mode=TwoWay}"/>
  

Когда вы используете поле со списком, значение SelectedDay изменится. Если вы хотите изменить значение из кода, реализуйте INotifyPropertyChanged и запускайте PropertyChanged из установщика SelectedDay .