我在 AutoCompleteBox 过滤方面遇到问题。
它似乎记住了之前的过滤器。
例如,我输入“A”,它会返回 1 项。我删除“A”并输入“Z”,这应该返回 1 项。
问题是它返回“A”过滤器加上“Z”的结果,我删除“Z”并输入“S”,这会带回 2 个项目,现在显示来自所有 3 个过滤器的结果。
难道我做错了什么?
stockTypes.Add(new StockTypeDTO() { Description = "Steel Coil", StockCode = "SC" });
stockTypes.Add(new StockTypeDTO() { Description = "Palletised Steel Coil", StockCode = "PS" });
stockTypes.Add(new StockTypeDTO() { Description = "ZZZZZ", StockCode = "ZZ" });
<input:AutoCompleteBox x:Name="testauto" FilterMode="Custom">
<input:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<ContentPresenter Content="{Binding Description}" />
</StackPanel>
</DataTemplate>
</input:AutoCompleteBox.ItemTemplate>
</input:AutoCompleteBox>
testauto.ItemsSource = this.StockTypes;
testauto.ItemFilter = (search, item) =>
{
StockTypeDTO stockType = item as StockTypeDTO;
if (stockType != null)
{
string filter = search.ToUpper(CultureInfo.InvariantCulture);
return (stockType.StockCode.ToUpper(CultureInfo.InvariantCulture).Contains(filter)
|| stockType.Description.ToUpper(CultureInfo.InvariantCulture).Contains(filter));
}
return false;
};
另外,显示了以前的结果,但将其视为不存在,对吧?我的意思是,选择它们不会改变自动完成框的值?
我也遇到了同样的问题,换了样式后就解决了。在我的情况下,这是因为 ListBox 的风格。如果您使用列表框的自定义样式,请尝试将其删除并使用默认样式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)