Xamarin Picker - выбранный элемент не работает при загрузке страницы - PullRequest
1 голос
/ 07 августа 2020

Я застрял с моим сборщиком, который заполняется категориями на загруженной странице. однако я хочу, чтобы в качестве selectitem была выбрана правильная категория продукта, но она не работает.

Ваша помощь приветствуется.

Мой XAML:

<Picker x:Name="Picker_Cats" Title="-- Select Category --"  ItemsSource="{Binding AllCats}" ItemDisplayBinding="{Binding CategoryName}" SelectedItem="{Binding SelectedCat,Mode=TwoWay}" Grid.Row="3" Grid.Column="1" TextColor="DarkGray" SelectedIndexChanged="Picker_Cats_SelectedIndexChanged"/>

Моя виртуальная машина:

private ObservableCollection<Category> _AllCats;
public ObservableCollection<Category> AllCats
        {
            set
            {
                this._AllCats = value;
                OnPropertyChanged();
            }
            get
            {
                return this._AllCats;
            }
        }


        private Category _SelectedCat;
        public Category SelectedCat
        {           
           set
            {
                this._SelectedCat = value;
                OnPropertyChanged();
            }
            get
            {
                return this._SelectedCat;
            }
        }





        public ProdsMngtDetailViewModel(Product product , Category selectedcat)
        {
            GetCatsAsync();
            SelectedCat = selectedcat;
            SelectedProduct = product;
            CategoriesService cs = new CategoriesService();
            AllCats = cs.GetAllCats();
        }

Я отладил свое приложение, и SelectedCat получает желаемое значение категории, но проблема в том, что средство выбора его не выбирает.

1 Ответ

0 голосов
/ 07 августа 2020

Не удалось установить значение SelectedItem напрямую. например,

SelectedCat = selectedcat;

Он должен быть включен в ItemsSource средства выбора.

В вашем случае вы можете изменить его следующим образом:

public ProdsMngtDetailViewModel(Product product , Category selectedcat)
{
  GetCatsAsync();
  SelectedProduct = product;
  CategoriesService cs = new CategoriesService();
  AllCats = cs.GetAllCats();

  // set SelectedCat after init the AllCats 

  foreach (var model in AllCats)
  {
      if(model.CategoryName==selectedcat.CategoryName)
      {
          SelectedCat = model;
      }
  }

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