Xamarin Forms中SyncFusion SfAutoComplete建议下拉列表为空的原因是什么
问题原因及解决方法
1. 过滤方法取值逻辑错误
自定义过滤委托Filter的第一个入参search就是当前用户输入的搜索文本,无需额外读取customerAutoComplete.Text。触发过滤逻辑时,控件的Text属性可能还未完成更新,大概率会拿到空值,导致所有匹配判断都不成立,下拉列表自然无内容。
2. 实体属性名拼写/大小写不匹配
你声明的实体类三个字段为CUSTNMBR、CUSTNAME、ZIP,但过滤方法中写的是myCustomer.CustName、myCustomer.CustNmbr,C#严格区分大小写,属性名不匹配会导致读取到空值,Contains判断会永远返回false。
3. 可选优化:增加空值兼容与大小写不敏感匹配
避免字段为空时抛出空引用异常,同时兼容大小写不同的搜索场景。
修改后的过滤方法示例
private bool FilterCustomers(string search, object customer) { // 直接使用方法传入的search参数,不要读取控件的Text属性 if (string.IsNullOrWhiteSpace(search) || customer == null) { return false; } var myCustomer = (OrganizationSearchDto)customer; // 属性名要和实体类的实际属性名完全一致,示例使用你给出的大写字段名 return myCustomer.CUSTNAME.Contains(search, StringComparison.OrdinalIgnoreCase) || myCustomer.CUSTNMBR.Contains(search, StringComparison.OrdinalIgnoreCase) || myCustomer.ZIP.Contains(search, StringComparison.OrdinalIgnoreCase); }
额外检查项
- 确认
GetCustomerCodes()返回的集合不为空,且集合元素的三个字段都有正常赋值 - 确认
DisplayMemberPath绑定的CUSTNMBR确实是OrganizationSearchDto类的公共属性,无拼写错误
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

