Guides----https://developer.xamarin.com/guides/xamarin-forms/user-interface/picker/
API-----https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/
Demo: Picker省,市,区 三级联动
using System;
using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;public class District //区 { public string DistrictName { get; set; } //区名字 public string DistrictPostcode { get; set; } //区的邮编 } public class City { public ObservableCollectionDistrictObservableCollection { get; set; } //区的集合 public string CityName { get; set; } //城市的名字 } public class Province { public ObservableCollection CityObservableCollection { get; set; } //城市的集合 public string ProvinceName { get; set; } //省份的名字 }
using System;
using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;public static class Data { public static ObservableCollectionProvinces { get; private set; } static Data() { Provinces = new ObservableCollection () { new Province() { ProvinceName = "福建省", CityObservableCollection = new ObservableCollection () { new City() { CityName = "福州市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "鼓楼区", DistrictPostcode = "350001" }, new District() { DistrictName = "晋安区", DistrictPostcode = "350002" }, new District() { DistrictName = "台江区", DistrictPostcode = "350003" }, new District() { DistrictName = "仓山区", DistrictPostcode = "350004" }, } }, new City() { CityName = "厦门市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "思明区", DistrictPostcode = "361001" }, new District() { DistrictName = "湖里区", DistrictPostcode = "361002" }, new District() { DistrictName = "集美区", DistrictPostcode = "361003" }, new District() { DistrictName = "海沧区", DistrictPostcode = "361004" }, new District() { DistrictName = "翔安区", DistrictPostcode = "361005" }, } }, new City() { CityName = "泉州市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "丰泽区", DistrictPostcode = "362001" }, new District() { DistrictName = "鲤城区", DistrictPostcode = "362002" }, new District() { DistrictName = "洛江区", DistrictPostcode = "362003" }, new District() { DistrictName = "泉港区", DistrictPostcode = "362004" }, } }, } }, new Province() { ProvinceName = "浙江省", CityObservableCollection = new ObservableCollection () { new City() { CityName = "杭州市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "西湖区", DistrictPostcode = "310001" }, new District() { DistrictName = "余杭区", DistrictPostcode = "310002" }, new District() { DistrictName = "萧山区", DistrictPostcode = "310003" }, new District() { DistrictName = "下城区", DistrictPostcode = "310004" }, } }, new City() { CityName = "宁波市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "海曙区", DistrictPostcode = "315001" }, new District() { DistrictName = "江东区", DistrictPostcode = "315002" }, new District() { DistrictName = "江北区", DistrictPostcode = "315003" }, new District() { DistrictName = "镇海区", DistrictPostcode = "315004" }, new District() { DistrictName = "北仑区", DistrictPostcode = "315005" }, } }, new City() { CityName = "温州市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "鹿城区", DistrictPostcode = "325001" }, new District() { DistrictName = "龙湾区", DistrictPostcode = "325002" }, new District() { DistrictName = "瓯海区", DistrictPostcode = "325003" }, } }, } }, new Province() { ProvinceName = "安徽省", CityObservableCollection = new ObservableCollection () { new City() { CityName = "合肥市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "蜀山区", DistrictPostcode = "230001" }, new District() { DistrictName = "庐阳区", DistrictPostcode = "230002" }, new District() { DistrictName = "瑶海区", DistrictPostcode = "230003" }, new District() { DistrictName = "包河区", DistrictPostcode = "230004" }, } }, new City() { CityName = "淮北市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "相山区", DistrictPostcode = "235001" }, new District() { DistrictName = "杜集区", DistrictPostcode = "235002" }, new District() { DistrictName = "烈山区", DistrictPostcode = "235003" }, } }, new City() { CityName = "宿州市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "埇桥区", DistrictPostcode = "234001" }, } }, } }, new Province() { ProvinceName = "江西省", CityObservableCollection = new ObservableCollection () { new City() { CityName = "南昌市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "东湖区", DistrictPostcode = "330001" }, new District() { DistrictName = "西湖区", DistrictPostcode = "330002" }, new District() { DistrictName = "青云谱区", DistrictPostcode = "330003" }, new District() { DistrictName = "湾里区", DistrictPostcode = "330004" }, } }, new City() { CityName = "景德镇市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "珠山区", DistrictPostcode = "333001" }, new District() { DistrictName = "昌江区", DistrictPostcode = "333002" }, } }, new City() { CityName = "九江市", DistrictObservableCollection = new ObservableCollection () { new District() { DistrictName = "浔阳区", DistrictPostcode = "332001" }, new District() { DistrictName = "庐山区", DistrictPostcode = "332002" }, } }, } } }; } }
using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;using DemoTest_3_28.Models;using Xamarin.Forms;using Xamarin.Forms.Xaml;namespace DemoTest_3_28.PickerDemo{ [XamlCompilation(XamlCompilationOptions.Compile)] public partial class PickerDemoPage : ContentPage { private ObservableCollectionsource; private string postcode = null; public PickerDemoPage() { InitializeComponent(); source = Data.Provinces; foreach (var province in source) { provincePicker.Items.Add(province.ProvinceName); } provincePicker.SelectedIndex = 0; } private void ProvincePicker_OnSelectedIndexChanged(object sender, EventArgs e) { if (provincePicker.SelectedIndex!=-1) { var result_1 = source[provincePicker.SelectedIndex].CityObservableCollection; CityPicker.Items.Clear();//重要, 而且触发CityPicker_OnSelectedIndexChanged,CityPicker.SelectedIndex=-1 foreach (var city in result_1) { CityPicker.Items.Add(city.CityName); } CityPicker.SelectedIndex = 0; } } private void CityPicker_OnSelectedIndexChanged(object sender, EventArgs e) { if (CityPicker.SelectedIndex!=-1) { var result_2 = source[provincePicker.SelectedIndex].CityObservableCollection[CityPicker.SelectedIndex].DistrictObservableCollection; DistrictPicker.Items.Clear(); //重要 foreach (var district in result_2) { DistrictPicker.Items.Add(district.DistrictName); } DistrictPicker.SelectedIndex = 0; //重要 } } private void DistrictPicker_OnSelectedIndexChanged(object sender, EventArgs e) { if (DistrictPicker.SelectedIndex!=-1) { postcode = source[provincePicker.SelectedIndex].CityObservableCollection[CityPicker.SelectedIndex].DistrictObservableCollection[DistrictPicker.SelectedIndex].DistrictPostcode; label_Postcode.Text = "邮编:" + postcode; } } }}