Xamarin表单-如何在picker中获取选定项?

Xamarin表单-如何在picker中获取选定项?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有一个拾荒者。我需要获取ProvinceID我尝试使用下面的代码获取ProvinceID。但是我找不到ProvinceID。我只能在选择器中获取文本,即省名称。如何获取ProvinceID?ItemsSource和ItemDisplayBinding之间的区别是什么 codePicker.ItemsSource[codePicker.SelectedIndex].ToString-我试图使用此代码查看是否可以获取ProvinceID。 样本数据: 省份:努埃瓦·埃希亚-这是采摘者展示的内容 P

我有一个拾荒者。我需要获取ProvinceID我尝试使用下面的代码获取ProvinceID。但是我找不到ProvinceID。我只能在选择器中获取文本,即省名称。如何获取ProvinceID?ItemsSource和ItemDisplayBinding之间的区别是什么

codePicker.ItemsSource[codePicker.SelectedIndex].ToString-我试图使用此代码查看是否可以获取ProvinceID。 样本数据: 省份:努埃瓦·埃希亚-这是采摘者展示的内容 ProvinceID:NE210-这是我需要得到的


实际上,您需要做的很简单:

获取选择器的选定项,如下所示

var selectedItem = provincePicker.SelectedItem as RetailerGroupTable;
var provinceId= selectedItem.ProvinceId;
我还建议您在选择器中订阅SelectedIndexChanged事件,以便您知道选择器选择发生了更改。这可以通过两种方式完成:

XAML

ItemsSource和ItemDisplayBinding之间有什么区别

根据Xamarin文件

IList类型的ItemsSource是要显示的项的源列表,默认为null。然而,当绑定到对象列表时,必须告诉选择器要从每个对象显示哪个属性。这是通过将ItemDisplayBinding属性设置为每个对象的必需属性来实现的

评论:

ItemsSource是一个IList,因此有一个枚举器,其工作原理是跟踪项目列表中有多少项目,从而创建许多要填充的点,另一方面,ItemDisplayBinding,它所做的一切都是告诉你的选择器,当我的选择器准备就绪时,我希望这个项目显示在选择器选项中

我希望我讲得有道理,如果有疑问,请回复

更新

XAML

C


您是否尝试了此codePicker.ItemsSource[codePicker.SelectedIndex].ProvinceID.ToString?@CGPA6.4有一个错误,我无法添加。ProvinceID在PickerSelectedIndexChangedObject发送者上尝试此私有无效,EventArgs e{Picker Picker=sender as Picker;var selectedItem=Picker.selectedItem;//这是在Picker中选择的模型}也许对你有帮助。在xaml中,assign on Pickers SelectedIndex将此方法更改为ItemSelected option。@CGPA6.4我使用了selectedItem.ToString,结果是Data.RetailerGroupTable不使用selectedItem.ToString,而是使用selectedItem.ProvinceID.ToString。
var selectedItem = provincePicker.SelectedItem as RetailerGroupTable;
var provinceId= selectedItem.ProvinceId;
<Picker SelectedIndexChanged="Picker_SelectedIndexChanged">
provincePicker.SelectedIndexChanged+=Picker_SelectedIndexChanged;
<local:CustomPicker x:Name="provincePicker" SelectedIndexChanged="provincePicker_SelectedIndexChanged" Unfocused="provincePicker_Unfocused" ItemsSource="{Binding ProvinceID}" ItemDisplayBinding="{Binding DisplayText}" StyleClass="fieldForm" IsEnabled="True">
<local:CustomPicker.FontFamily>
     <OnPlatform x:TypeArguments="x:String">
         <On Platform="Android" Value="HelveticaNeueLTPro-Lt.otf#HelveticaNeueLTPro-Lt"/>
     </OnPlatform>
</local:CustomPicker.FontFamily>
 Device.BeginInvokeOnMainThread(()=>{
 var result = conn.QueryAsync<RetailerGroupTable>("SELECT * FROM tblRetailerGroup WHERE RetailerCode=?", code).Result.FirstOrDefault();
provincePicker.SelectedItem = result;
                    });