Отображение значения по умолчанию в ComboBox без установленного ИМЯ (WPF) - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть ComboBox:

<ComboBox ItemsSource="{Binding Path=MonthDaysList}" IsSynchronizedWithCurrentItem="True"/>

Вот метод генерации MonthDaysList данных:

public ObservableCollection<string> MonthDaysList { get; internal set; }
public void GetMonths() {
   MonthDaysList = new ObservableCollection<string>();
   foreach (var item in MyConceptItems) {
            MonthDaysList.Add(item.DateColumn);
   }}

ObservableCollection & Binding работают нормально, но не отображается по умолчанию /первый элемент в ComobBox:

enter image description here

Возможно разрешить его without настроить Имя ComboBox?

1 Ответ

0 голосов
/ 25 сентября 2018

Определите свойство источника string в модели представления и свяжите свойство SelectedItem ComboBox с этим:

<ComboBox ItemsSource="{Binding Path=MonthDaysList}" SelectedItem="{Binding SelectedMonthDay}"/>

Убедитесь, что вы реализуете интерфейс INotifyPropertyChanged, есливы намерены установить свойство источника динамически:

public class ViewModel : INotifyPropertyChanged
{
    private ObservableCollection<string> _monthDaysList;
    public ObservableCollection<string> MonthDaysList
    {
        get { return _monthDaysList; }
        internal set { _monthDaysList = value; OnPropertyChanged(); }
    }


    private string _selectedMonthDay;
    public string SelectedMonthDay
    {
        get { return _selectedMonthDay; }
        internal set { _selectedMonthDay = value; OnPropertyChanged(); }
    }

    public void GetMonths()
    {
        MonthDaysList = new ObservableCollection<string>();
        if (MyConceptItems != null && MyConceptItems.Any())
        {
            foreach (var item in MyConceptItems)
            {
                MonthDaysList.Add(item.DateColumn);
            }
            SelectedMonthDay = MonthDaysList[0];
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...