MAUI 中 Picker 即为下拉选择框,跨平台呈现为下拉列表或弹出选择器;支持数据绑定、显示/值分离、平台微调,是覆盖 90% 场景的首选控件。

MAUI 中没有叫“下拉选择框”的原生控件,但 Picker 就是你要的——它在不同平台呈现为下拉列表(Android/iOS)或弹出选择器(Windows),语义和功能完全对应。
Picker 基础用法:绑定数据 + 响应选中
Picker 是最轻量、最常用的单选选择控件。只需设置 ItemsSource(数据源)和 SelectedItem(当前选中项),再监听 SelectedItemChanged 事件即可。
- 在 XAML 中声明:
- 在 ViewModel 中准备集合:public ObservableCollection
Cities { get; } = new() { "北京", "上海", "广州", "深圳" }; - 绑定 SelectedItem 并响应变化:public string SelectedCity { get; set; },配合 INotifyPropertyChanged 或使用 CommunityToolkit.Mvvm 的 [ObservableProperty]
自定义显示文本与值(Value/DisplayText 分离)
实际开发中常需显示名称(如“北京市”),但提交 ID(如 "110000")。Picker 本身不直接支持 ValueMember/DisplayMember,但可通过对象绑定实现:
- 定义一个简单类:public class City { public string Name { get; set; } = ""; public string Code { get; set; } = ""; }
- ItemsSource 绑定 ObservableCollection
,然后用 ItemDisplayBinding="{Binding Name}" 指定显示字段 - SelectedItem 是 City 对象,可直接取 SelectedCity.Code 获取值
Platform-specific 行为微调(可选)
Picker 在各平台默认行为合理,但若需定制,可用平台特定代码:
- iOS:默认弹出 UIPickerView;如需禁用滚动动画,可在 MauiProgram.cs 注册自定义渲染器(较重,一般不需)
- Android:点击即展开下拉;若想设默认提示文字(如“请选择城市”),用 Title="请选择城市" 属性(仅 Android & iOS 显示标题)
- Windows:显示为 ComboBox 风格下拉;若需键盘导航支持,确保 Focusable="True"(默认已开启)
替代方案:ComboBox(Windows 专用)与 Popup(跨平台灵活方案)
Picker 是跨平台首选,但有局限:不支持搜索、不能输入、样式不可控。进阶场景可考虑:
- Microsoft.Maui.Controls.Compatibility.Controls.ComboBox:仅 Windows 可用,带搜索和输入建议
- CommunityToolkit.Maui.Views.Popup + ListView/CollectionView:完全自定义弹出层,支持搜索、分组、图标等,适合复杂业务
- 注意:不要用 Shell 或 NavigationPage 模拟下拉——体验差、不符合平台规范
基本上就这些。Picker 看似简单,但把数据绑定、平台适配、扩展边界理清楚,就能稳稳覆盖 90% 的下拉选择需求。










