我有一个选择器。我需要获取 ProvinceID ,我尝试使用下面的代码获取 ProvinceID 。但是我无法获得省ID 。我只能在选择器内找到文本,即省名。如何获取 ProvinceID , ItemsSource 和 ItemDisplayBinding 有什么区别?
codePicker.ItemsSource [codePicker.SelectedIndex] .ToString()-我尝试使用此代码来查看是否可以获取ProvinceID。
样本数据:
省:Nueva Ecija-这是选择器显示的内容
省份:NE210-这就是我需要的
<local:CustomPicker x:Name="provincePicker" SelectedIndexChanged="provincePicker_SelectedIndexChanged" Unfocused="provincePicker_Unfocused" SelectedItem="{Binding DisplayText}" 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>
</local:CustomPicker>
var getCode = conn.QueryAsync<RetailerGroupTable>("SELECT * FROM tblRetailerGroup WHERE RetailerCode=?", code);
var resultCount = getCode.Result.Count;
if (resultCount > 0)
{
for (int i = 0; i < resultCount; i++)
{
var result = getCode.Result[i];
provincePicker.SelectedItem = result.ProvinceID;
}
}
答案 0 :(得分:1)
实际上,您需要做的很简单:
获取选择器的选定项目,如下所示;
var selectedItem = provincePicker.SelectedItem as RetailerGroupTable;
var provinceId= selectedItem.ProvinceId;
我还建议您在选择器中订阅SelectedIndexChanged事件,以使您知道选择器选择有所变化,这可以通过两种方式完成:
XAML
<Picker SelectedIndexChanged="Picker_SelectedIndexChanged">
C#
provincePicker.SelectedIndexChanged+=Picker_SelectedIndexChanged;
ItemsSource和ItemDisplayBinding有什么区别?
根据Xamarin文档
类型为ItemsSource
的
IList
是要显示的项目的源列表,默认为null。而绑定到对象列表时,必须告诉Picker
从每个对象显示哪个属性。这是通过将ItemDisplayBinding
属性设置为每个对象的必需属性来实现的。
评论:
ItemsSource
是一个IList
,因此有一个Enumerator
,它的工作原理是跟踪您在项目列表中有多少个项目,从而创建了很多位置另一方面,ItemDisplayBinding
与这些事情无关,它只是告诉您的Picker
我希望当我的{ {1}}依次准备就绪。
我希望我有道理,如有查询,请还原。
更新
XAML
Picker
C#
<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>