Значение загрузки по умолчанию в ComboBox - WPF MVVM - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть ComboBox и я хочу предварительно заполнить значение в ComboBox до заданного значения.

У меня есть список категорий продуктов питания, который представляет собой ObservableCollection под названием ItemCategories , которыйнедвижимость.Список имеет 5 разных типов.

У меня также есть свойство выбранной категории с именем ItemCategory типа ItemCategory.

ItemCategory имеет два свойства, Category и PK_ItemCategoryId.

Пока это то, что у меня есть

ComboBox XAML

ComboBox Содержание RunTime

ItemSource комбинированного списка привязан к свойству в ViewModel.

private ObservableCollection<ItemCategory> _itemCategories;
        public ObservableCollection<ItemCategory> ItemCategories
        {
            get
            { return _itemCategories; }
            set
            {
                _itemCategories = value;
                OnPropertyChanged("ItemCategories");
            }
        }

        private ItemCategory _itemCategory;
        public ItemCategory ItemCategory
        {
            get { return _itemCategory; }
            set
            {
                _itemCategory = value;
                OnPropertyChanged("ItemCategory");
            }
        }

Что я хочу сделать, когда пользователь открывает приложение, так это предварительно заполнить значение в поле со списком в списке.Ниже приведен пример того, чего я хочу достичь.

Цель

Как я могу добиться этого, используя MVVM и WPF?

Ответы [ 2 ]

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

Поскольку ваше свойство SelectedItem установлено на Mode=TwoWay, вы можете установить свойство в вашем ViewModel следующим образом:

//if you imported LINQ
if(ItemCategories != null && ItemCategories.Any())
    ItemCategory = ItemCategories.First();

//without LINQ
if(ItemCategories != null && ItemCategories.Count > 0)
    ItemCategory = ItemCategories[0];

Это займет первый элемент в ItemCategories, еслиесть, и установите его как SelectedItem.

. UI будет уведомлено через OnPropertyChanged().

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

Это должно работать, если вы установите элемент по умолчанию (например, первый элемент _itemCategories) в _itemCategory в ctor of ViewModel или позже в свойстве ItemCategory.

Это должен быть один из элементов из _itemsCategories- НЕ новый экземпляр ItemCategory!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...