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

UWP中NavigationView与AutoSuggestBox无法匹配NavigationViewItem问题

UWP AutoSuggestBox无法匹配NavigationViewItem.Content的问题解决

常见问题点及修复方案

1. 未正确筛选NavigationView的有效菜单项

NavigationView的MainMenuItems集合可能包含分隔符(NavigationViewItemSeparator)等非菜单项元素,需先筛选出NavigationViewItem类型的项:

var allMenuItems = NavView.MainMenuItems.OfType<NavigationViewItem>().ToList();

2. Content属性类型判断或取值错误

  • 如果Content直接绑定字符串:需判断不为null,并使用不区分大小写的匹配逻辑
  • 如果Content绑定自定义对象:需访问对象的具体属性(如标题属性)而非直接使用ToString()

示例字符串类型Content的过滤逻辑:

var filteredItems = allMenuItems.Where(item => 
    item.Content is string content &&
    !string.IsNullOrEmpty(SearchBox.Text) &&
    content.IndexOf(SearchBox.Text, StringComparison.OrdinalIgnoreCase) != -1
).ToList();

示例自定义对象(如MenuModel)的过滤逻辑:

// 假设自定义菜单模型
public class MenuModel
{
    public string Title { get; set; }
}

// 过滤代码
var filteredItems = allMenuItems.Where(item => 
    item.Content is MenuModel model &&
    !string.IsNullOrEmpty(SearchBox.Text) &&
    model.Title.IndexOf(SearchBox.Text, StringComparison.OrdinalIgnoreCase) != -1
).ToList();

3. 未正确更新AutoSuggestBox的SuggestionsSource

在TextChanged事件中,需将过滤后的集合赋值给AutoSuggestBox.SuggestionsSource,同时注意仅在用户输入时执行过滤:

private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
    if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
    {
        var allItems = NavView.MainMenuItems.OfType<NavigationViewItem>().ToList();
        
        var filteredItems = allItems.Where(item => 
            item.Content is string content &&
            content.IndexOf(sender.Text, StringComparison.OrdinalIgnoreCase) != -1
        ).ToList();
        
        sender.SuggestionsSource = filteredItems;
    }
}

4. XAML配置错误

确保AutoSuggestBox的DisplayMemberPath与Content类型匹配:

  • 若Content是字符串:可设置DisplayMemberPath="Content"
  • 若Content是自定义对象:设置为对象的标题属性名,如DisplayMemberPath="Title"

示例XAML:

<AutoSuggestBox x:Name="SearchBox"
                PlaceholderText="搜索菜单"
                TextChanged="AutoSuggestBox_TextChanged"
                DisplayMemberPath="Content"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:01:02