XAML radcombobox上的文本输入出现问题

gajydyqb  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在使用一个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;
    }
mitkmikd

mitkmikd1#

解决了这个问题。下拉列表的查询会关闭下拉列表。这会让它认为有人选择了一个值。然后这个值会被突出显示,当用户继续输入时,它会清除它。简单地让下拉列表在选择更改时打开就可以解决这个问题!

Items.IsDropDownOpen = true;

相关问题