mcpField
S
syncfusion-winui-autocomplete

syncfusion-winui-autocomplete

github.com/syncfusion开发150 次安装1 周前更新
代码仓库

关于 syncfusion-winui-autocomplete

此技能指导开发者构建 Syncfusion WinUI 的 SfAutoComplete,可随输入筛选建议。它支持单选或多选、自定义建议显示,并可将已选项目呈现为令牌。

主要功能

  1. 01随输入筛选建议
  2. 02支持单选或多选
  3. 03以令牌显示已选项目
  4. 04分组并高亮建议项
  5. 05自定义模板和输入视图
  6. 06显示自定义无结果内容

适用场景

  1. 01从联系人中选择邮件收件人
  2. 02按部分文本搜索商品
  3. 03为项目分配多个类别或标签
  4. 04浏览分组的位置建议

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/winui-ui-components-skills --skill syncfusion-winui-autocomplete

安装后在 Claude Code 中输入/syncfusion-winui-autocomplete确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-features.md
getting-started.md
searching-filtering.md
selection.md
ui-customization.md

详细介绍

实现自动完成(SfAutoComplete)

Syncfusion WinUI AutoComplete(SfAutoComplete)是一款高度优化的控件,可在用户输入时从大型数据集中提供筛选后的建议。它支持单选和多选,并将所选项显示为包含图像、文本和关闭按钮的令牌,方便移除。

何时使用此技能

在用户需要以下功能时使用此技能:

  • 在 WinUI 应用程序中实现自动完成搜索功能
  • 创建可搜索的下拉列表,根据用户输入筛选建议
  • 构建标签或令牌输入字段,支持多选
  • 根据用户输入的字符筛选大型数据集
  • 提供输入即搜索体验,并自动显示建议
  • 实现多选下拉列表,以芯片/令牌形式显示选项
  • 添加水印文本,引导用户在搜索字段中输入内容
  • 自定义建议项的显示方式,包含图像和自定义模板
  • **处理“未找到结果”**的情况,并提供自定义消息
  • 在自动完成输入框中添加前置/后置图标或按钮

组件概览

包: Syncfusion.Editors.WinUI
命名空间: Syncfusion.UI.Xaml.Editors
控件: SfAutoComplete

主要功能:

  • 单选和多选模式
  • 实时筛选(StartsWith 或 Contains)
  • 支持自定义筛选逻辑
  • 将所选项显示为令牌/芯片
  • 高亮匹配文本
  • 对建议进行分组
  • 前置和后置视图
  • 水印/占位符文本
  • 键盘导航
  • 模板自定义

文档与导航指南

入门

📄 阅读: references/getting-started.md

当用户需要:

  • 安装 AutoComplete 包
  • 创建和配置控件
  • 使用 ItemsSource 设置数据绑定
  • 配置 TextMemberPath 和 DisplayMemberPath
  • 实现基本的自动完成功能
选择

📄 阅读: references/selection.md

当用户需要:

  • 配置单选或多选
  • 以编程方式处理所选项
  • 显示多选的令牌/芯片
  • 监听选择更改事件
  • 使用 SelectedItem 或 SelectedItems 属性
搜索与筛选

📄 阅读: references/searching-filtering.md

当用户需要:

  • 配置筛选行为(StartsWith 或 Contains)
  • 实现自定义筛选逻辑
  • 根据特定属性进行搜索
  • 处理自动填充和自动建议
  • 筛选后选择默认项
UI 自定义

📄 阅读: references/ui-customization.md

当用户需要:

  • 自定义下拉列表项模板
  • 添加前置图标或按钮
  • 添加后置操作或清除按钮
  • 设置所选项令牌的样式
  • 处理“未找到结果”UI
  • 设置水印/占位符文本
高级功能

📄 阅读: references/advanced-features.md

当用户需要:

  • 按类别对建议进行分组
  • 高亮建议中的匹配文本
  • 实现键盘快捷键
  • 确保符合无障碍要求
  • 处理高级用户交互

快速入门示例

基本单选自动完成
<Window xmlns:editors="using:Syncfusion.UI.Xaml.Editors">
    <Grid>
        <editors:SfAutoComplete x:Name="autoComplete"
                                Width="250"
                                PlaceholderText="Search social media..."
                                ItemsSource="{Binding SocialMedias}"
                                DisplayMemberPath="Name"
                                TextMemberPath="Name"
                                TextSearchMode="Contains" />
    </Grid>
</Window>
// Model
public class SocialMedia
{
    public string Name { get; set; }
    public int ID { get; set; }
}

// ViewModel
public class SocialMediaViewModel
{
    public ObservableCollection<SocialMedia> SocialMedias { get; set; }
    
    public SocialMediaViewModel()
    {
        SocialMedias = new ObservableCollection<SocialMedia>
        {
            new SocialMedia { Name = "Facebook", ID = 0 },
            new SocialMedia { Name = "Instagram", ID = 1 },
            new SocialMedia { Name = "Twitter", ID = 2 },
            new SocialMedia { Name = "LinkedIn", ID = 3 }
        };
    }
}

// Set DataContext
autoComplete.DataContext = new SocialMediaViewModel();
带令牌的多选
<editors:SfAutoComplete x:Name="autoComplete"
                        Width="300"
                        SelectionMode="Multiple"
                        PlaceholderText="Select multiple items..."
                        ItemsSource="{Binding SocialMedias}"
                        DisplayMemberPath="Name"
                        TextMemberPath="Name"
                        TextSearchMode="Contains" />

常见模式

模式 1:使用 Contains 筛选进行搜索
<editors:SfAutoComplete ItemsSource="{Binding Countries}"
                        DisplayMemberPath="Name"
                        TextMemberPath="Name"
                        TextSearchMode="Contains"
                        PlaceholderText="Type to search..." />

适用于用户需要按文本中的任意部分查找项,而不仅仅是按开头查找的场景。

模式 2:使用自定义显示方式的多选标签
<editors:SfAutoComplete SelectionMode="Multiple"
                        ItemsSource="{Binding Tags}"
                        DisplayMemberPath="Name"
                        TextMemberPath="Name">
    <editors:SfAutoComplete.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Padding="5">
                <TextBlock Text="{Binding Name}" 
                          FontWeight="SemiBold"/>
            </StackPanel>
        </DataTemplate>
    </editors:SfAutoComplete.ItemTemplate>
</editors:SfAutoComplete>

适用于标签系统,用户可选择多个以令牌形式显示的项。

模式 3:带前置图标的自动完成
<editors:SfAutoComplete ItemsSource="{Binding Items}"
                        DisplayMemberPath="Name"
                        TextMemberPath="Name">
    <editors:SfAutoComplete.LeadingView>
        <Grid Padding="8">
            <Path Data="M15.5 14h-.79l-.28-.27C15.41..." 
                  Fill="{ThemeResource SystemAccentColor}"/>
        </Grid>
    </editors:SfAutoComplete.LeadingView>
</editors:SfAutoComplete>

用于为自动完成字段提供视觉提示(例如,搜索图标)。

模式 4:自定义“未找到结果”消息
<editors:SfAutoComplete ItemsSource="{Binding Products}"
                        DisplayMemberPath="Name"
                        TextMemberPath="Name"
                        NoResultsFoundContent="No products found. Try a different search." />

用于在筛选没有匹配项时提供有用的反馈。

主要属性

属性类型描述
ItemsSourceobject要显示的数据项集合
DisplayMemberPathstring下拉列表项的显示属性路径
TextMemberPathstring选择框文本的属性路径
SelectionModeAutoCompleteSelectionModeSingle 或 Multiple 选择模式
TextSearchModeAutoCompleteTextSearchMode使用 StartsWith 或 Contains 进行筛选
PlaceholderTextstring内容为空时显示的水印文本
SelectedItemobject当前选中的项(单选模式)
SelectedItemsObservableCollection选中项集合(多选模式)
NoResultsFoundContentobject未找到匹配项时显示的内容
LeadingViewobject显示在文本输入框之前的内容
TrailingViewobject显示在文本输入框之后的内容
GroupMemberPathstring对项进行分组的属性路径
HighlightedTextColorBrush匹配文本的高亮颜色
FilterBehaviorAutoCompleteFilterBehavior自定义筛选逻辑

常见用例

邮件收件人选择器

使用多选自动补全从联系人列表中选择邮件收件人,并将已选联系人显示为可移除的标记。

产品搜索

在电商应用中使用单选自动补全查找产品,并通过包含匹配进行筛选,实现灵活搜索。

分类标记

使用多选自动补全为项目分配多个类别或标记,并自定义标记的显示方式。

地点搜索

使用单选自动补全显示分组建议(国家 > 城市),并通过 StartsWith 筛选快速导航。

技能搜索

使用多选自动补全从预定义列表中选择用户技能,并在无法识别条目时显示“无结果”消息。

相关组件

  • ComboBox - 用于不带自动补全筛选的简单下拉选择
  • TextBox - 用于不带建议的基本文本输入(如有文档)

集成提示

与 MVVM 配合:

  • 将 ItemsSource 绑定到 ViewModel 的 ObservableCollection
  • 使用双向绑定的 SelectedItem 或 SelectedItems
  • 通过绑定命令在 ViewModel 中处理选择变化

性能:

  • 对大型数据集(>1000 项)使用虚拟化
  • 对远程数据源考虑异步加载
  • 对超大列表使用 TextSearchMode.StartsWith 以获得更好的性能

无障碍性:

  • 始终设置 PlaceholderText 来引导用户
  • 使用 AutomationProperties.Name 支持屏幕阅读器
  • 确保键盘导航正常工作(Tab、Enter、Esc)
  • 使用高对比度主题进行测试

故障排除快速修复

问题解决方案
未显示建议检查 ItemsSource 是否已绑定且包含数据;确认 DisplayMemberPath 设置正确
显示的文本不正确将 TextMemberPath 设置为正确的属性名称
筛选不起作用确保已设置 TextSearchMode;确认属性数据类型为字符串
多选不起作用设置 SelectionMode="Multiple"
自定义模板未应用检查 ItemTemplate 的 DataContext 绑定是否与数据模型匹配
未显示无结果消息设置 NoResultsFoundContent 属性

**后续步骤:**如需了解详细实现,请使用上方的文档指南,导航到与需求相符的特定参考文件。

评论

支持 Markdown