Задать SelectedIndex в ComboBox при привязке данных

203
14 августа 2017, 08:13

ComboBox привязан при определенной коллекции данных, которая заполняется полученными из интернета данными после запуска программы. Нужно что бы в ComboBoxе сразу после загрузки данных в коллекцию был выбранным первый элемент коллекции. Напрашивается очевидное решение - после загрузки данных в коллекцию присвоить свойству SelectedIndex значение 0, но в таком случае элемент становится выбранным только после того как пользователь раскрыл и закрыл выпадающий список ComboBoxa. Как сделать так что бы в этом элементе выбранным сразу отображался первый элемент коллекции?

Answer 1

Например так:

XAML

<ComboBox ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem}" />

ViewModel:

// Идем по полученным данным.
foreach (var item in data)
{
    MyCollection.Add(item); // добавляем данные в коллекцию.
}
SelectedItem = MyCollection.FirstOrDefault(); // выставляем в качестве выбранного первый элемент

Само свойство SelectedItem при этом должно быть INPC, т.е. должно уметь уведомлять представление об изменении своего состояния.

private MyType _selectedItem;
public MyType SelectedItem
{
    get
    {
        return _selectedItem;
    }
    set
    {
        _selectedItem = value;
        RaisePropertyChanged(() => SelectedItem); // Уведомляем, что состояние свойства изменилось
    }
}
READ ALSO
Реализация Undo/Redo для свойств ViewModel

Реализация Undo/Redo для свойств ViewModel

Есть класс PersonVm, который представляет информацию о человеке:

354
Включить и выключить TextBox с помощью кнопки Button c#

Включить и выключить TextBox с помощью кнопки Button c#

Подскажите пожалуйста, как сделать чтобы при нажатии на Button один раз TextBox включился и второй раз нажать на этот же Button TextBox должен выключитсяСпасибо

278
не работает прокрутка в ListBox из-за DataGrid

не работает прокрутка в ListBox из-за DataGrid

Добрый деньОбнаружил такую проблему

279