Xamarin选取器-所选项目在页面加载时不起作用

unftdfkk  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(173)

我卡住了我的picker这是正在填充的类别上的pageload .但是我希望正确的类别的产品被选为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正在获取我所需的类别值,但问题是选择器没有选择它。

kmbjn2e3

kmbjn2e31#

无法直接设置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;
      }
  }

}
yrefmtwq

yrefmtwq2#

有没有可能页面在初始化加载时没有直接显示?在这一点上,我遇到了听起来像你的问题的问题。我一次加载所有的内容页面,当我转到一个特定的页面时,页面没有刷新。如果这是问题所在,那么最便宜的解决方案是只初始化在同一时刻请求的页面。(我希望不是这样)

相关问题