You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI是否提供支持多选功能的Picker组件?

.NET MAUI 多选Picker解决方案

官方标准的Picker组件确实不支持多选功能,文档中也未提及相关特性。要实现多选需求,你可以通过以下两种方式解决:

1. 自定义实现

你可以利用MAUI的基础控件组合构建自定义多选选择器,常见方案是结合Popup(推荐使用.NET MAUI Community Toolkit提供的Popup控件)和CollectionView+CheckBox,模拟下拉多选的交互。

实现步骤示例:

1.1 准备数据模型

创建带选中状态的实体类,用于绑定多选项:

public class SelectableItem : INotifyPropertyChanged
{
    private bool _isSelected;
    public bool IsSelected
    {
        get => _isSelected;
        set 
        { 
            _isSelected = value; 
            OnPropertyChanged(); 
        }
    }
    public string DisplayName { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

1.2 创建多选Popup

新建Popup页面(MultiSelectPopup.xaml)展示多选选项:

<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
               xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
               xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
               x:Class="YourAppNamespace.MultiSelectPopup"
               Size="320,450">
    <VerticalStackLayout Padding="10" Spacing="10">
        <Label Text="请选择多项" FontSize="Headline" />
        <CollectionView x:Name="ItemsCollectionView" VerticalOptions="FillAndExpand">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <HorizontalStackLayout Padding="5" Spacing="10">
                        <CheckBox IsChecked="{Binding IsSelected}" />
                        <Label Text="{Binding DisplayName}" FontSize="Body" />
                    </HorizontalStackLayout>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
        <Button Text="确认选择" Clicked="OnConfirmClicked" />
    </VerticalStackLayout>
</toolkit:Popup>

Popup后台代码:

public partial class MultiSelectPopup : Popup
{
    public MultiSelectPopup(List<SelectableItem> items)
    {
        InitializeComponent();
        ItemsCollectionView.ItemsSource = items;
    }

    private void OnConfirmClicked(object sender, EventArgs e)
    {
        Close();
    }
}

1.3 在主页面调用Popup

主页面XAML:

<VerticalStackLayout Padding="20" Spacing="15">
    <Button Text="打开多选选择器" Clicked="OpenMultiSelectPopup" />
    <Label x:Name="SelectedItemsLabel" FontSize="Body" />
</VerticalStackLayout>

主页面后台代码:

private async void OpenMultiSelectPopup(object sender, EventArgs e)
{
    // 模拟数据源
    var selectableItems = new List<SelectableItem>
    {
        new SelectableItem { DisplayName = "选项A" },
        new SelectableItem { DisplayName = "选项B" },
        new SelectableItem { DisplayName = "选项C" },
        new SelectableItem { DisplayName = "选项D" }
    };

    var popup = new MultiSelectPopup(selectableItems);
    await this.ShowPopupAsync(popup);

    // 获取并展示选中项
    var selectedItems = selectableItems.Where(item => item.IsSelected)
                                       .Select(item => item.DisplayName);
    SelectedItemsLabel.Text = $"已选:{string.Join(", ", selectedItems)}";
}

2. 使用第三方控件

部分商业或开源MAUI控件库提供了现成的多选Picker组件,比如:

  • Syncfusion MAUI MultiSelect Picker
  • Telerik UI for MAUI MultiSelectPicker
  • 开源的Maui.Controls.MultiPicker(需自行验证兼容性)

这些控件通常封装好了多选逻辑和交互样式,能快速集成到项目中。

内容的提问来源于stack exchange,提问作者Thomas Carlton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:15:33