代码之家  ›  专栏  ›  技术社区  ›  solarissf

xamarin picker SelectedItem在可观察集合上返回null

  •  0
  • solarissf  · 技术社区  · 5 年前

    在我的xamarin项目picker binding中,SelectedItem不工作。当我将ItemSource设置为列表时,SelectedItem工作,但是当我将ItemSource更改为observatecollection时,SelectedItem始终返回null。有人能看出我做错了什么吗?

    xaml公司

            <Picker x:Name="PickerMarket2" Title="Market2" ClassId="PickerMarket2"
                    ItemsSource="{Binding TestList2}"
                    ItemDisplayBinding="{Binding ShortDesc}"
                    SelectedItem="{Binding SelectedMarket}"
                    Grid.Row="0" Grid.Column="1" >
            </Picker>
    

    视图模型

        class VamiMarketViewModel: INotifyPropertyChanged
    {
        private List<string> _testList;
        public List<string> TestList
        {
            get { return _testList; }
            set
            {
                {
                    _testList = value;
                    NotifyPropertyChanged();
                }
            }
        }
    
        private ObservableCollection<Performance> _testList2;
        public ObservableCollection<Performance> TestList2
        {
            get { return _testList2; }
            set
            {
                {
                    _testList2 = value;
                    NotifyPropertyChanged();
                }
            }
        }
    
        private string _selectedMarket;
        public string SelectedMarket
        {
            get { return _selectedMarket; }
            set
            {
                {
                    _selectedMarket = value;
                    NotifyPropertyChanged();
                }
            }
        }
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Harikrishnan    5 年前

    我刚才在你的 other question here .

    我从你的代码中看到 SelectedItem 似乎是个问题。 自从你 Picker ItemsSource (TestList属性)的类型为 List<Performance> 选择项目 采摘器 必须是类型 Performance string 而不是 .

    这个 ItemDisplayBinding 性能 对象,该对象在您的情况下是可以的,因为您有一个名为 ShortDesc 在你的内心 性能 上课。

    肖德斯克 如下所示,并分配收藏中的任何一项 TestList 为了它。你的代码将开始正常工作。

    private Performance _shortDesc;
    public Performance ShortDesc
    {
       get { return _shortDesc; } 
       set
       {
           {
                _shortDesc = value;
                NotifyPropertyChanged();
           }
       }
    }
    

    documentation here 这解释了将对象绑定到Picker的明确示例。