我正在使用一个Telerik rad组合框,它是由一个查询填充的。我遇到的问题是,组合框上的文本过滤可用,当用户快速输入文本时,短语的一部分会消失(很少有相同数量的字符消失)。但如果用户输入文本缓慢,它就像正常工作一样。这就像当输入太多太快时,它会清除文本输入。
例如,如果用户快速输入“Bob the robot”,最终结果是按“the robot”或“bot”或“ob the robot”进行过滤。我对这一切都很陌生,所以我不确定问题可能发生在哪里
<telerik:RadComboBox
x:Name="Items"
CanAutocompleteSelectItems="True"
IsTextSearchEnabled="True"
IsEditable="True"
DisplayMemberPath="NameAndFullAddress"
IsTabStop="False"
TextSearchMode="Contains"
IsTextSearchCaseSensitive="False"
AllowMultipleSelection="False"
OpenDropDownOnFocus="True"
SelectionChanged="Items_OnSelectionChanged"
>
private void Items_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var newItem = e.AddedItems.Count > 0 ? e.AddedItems[0] as NameInformation : null;
if (newItem?.NameID != ViewModel?.SelectedItemVm?.Item?.NameID)
{
if (newItem != null)
{
ViewModel?.SetSelected(newItem.NameID);
}
}
}
public IObservable<Unit> SetSelected(Guid nameId)
{
var completedUnit = new Subject<Unit>();
_collectionSourceVm
.GetLocation(nameId)
.ObserveOn(Scheduler)
.Subscribe(x =>
{
var selectedItemVm = _itemFactory.Create(x, this);
_selectedItemVm.OnNext(selectedItemVm);
_items.OnNext(!Items.Contains(selectedItemVm)?new[] {selectedItemVm}.Concat(Items).ToList():Items);
completedUnit.OnNext(Unit.Default);
});
return completedUnit;
}
1条答案
按热度按时间mitkmikd1#
解决了这个问题。下拉列表的查询会关闭下拉列表。这会让它认为有人选择了一个值。然后这个值会被突出显示,当用户继续输入时,它会清除它。简单地让下拉列表在选择更改时打开就可以解决这个问题!