Telerik RadAutoCompleteBox с динамической проблемой ItemSource - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть RadAutoCompleteBox с динамическим ItemSource, который работает в некоторых местах, а не в других.В установщике для SearchText я запускаю поиск и заполняю ItemSource.В поле, над которым я сейчас работаю, ObservableCollection ItemSource дает мне «Исключение: System.ArgumentException» в System.Core.dll », когда я пытаюсь добавить элемент в него.Этот метод работает во многих местах в другом месте, и если я вручную установил SearchText в другом месте, код ошибки работает без ошибок.Любая помощь будет принята с благодарностью.

Вот код XAML:

<telerik:RadAutoCompleteBox 
    Grid.Column="2" Grid.Row="3"
    x:Name="AutoCompleteBoxMakeModel"
    ItemsSource="{Binding MakeModelCollection}"
    SearchText="{Binding MakeModelTerm, Mode=TwoWay}"
    SelectedItem="{Binding SelectedMakeModel, Mode=TwoWay}"
    SelectionMode="Single"
    HorizontalAlignment="Left" 
    TextSearchPath="Display"
    TextSearchMode="Contains"
    AutoCompleteMode="Suggest"
    IsDropDownOpen="{Binding IsMakeModelDropDownOpen, Mode=TwoWay}"
    DropDownItemTemplate="{StaticResource MakeModelSearchTemplate}"
    DropDownWidth="300"
    VerticalAlignment="Top" Width="275"  Height="25" Margin="0,3,0,0" >
    <telerik:StyleManager.Theme>
        <telerik:VisualStudio2013Theme/>
    </telerik:StyleManager.Theme>
</telerik:RadAutoCompleteBox>

А вот код ошибки:

private string makeModelTerm;
public string MakeModelTerm
{
    get { return makeModelTerm; }
    set
    {
        if (makeModelTerm == value)
        {
            return;
        }
        makeModelTerm = value;
        RaisePropertyChanged("MakeModelTerm");
        if (value.Length > 2)
        {
            SearchMakeModel(value);
        }
    }
}

private void SearchMakeModel(string value)
{
    LookUpRepository er = new LookUpRepository();
    var list = er.SearchMakeModel(value);
    MakeModelCollection.Clear();
    list.ForEach(MakeModelCollection.Add); // This triggers the System.ArgumentException on each value in list
    this.IsMakeModelDropDownOpen = true;
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы должны передать делегата в список. Для каждого, как показано ниже.

list.ForEach(item => MakeModelCollection.Add(item));

Для справки, пожалуйста, посмотрите здесь реализацию Microsoft для того же:

https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,0e5a9cf0a310b9e5

0 голосов
/ 21 февраля 2019

TextSearchPath не соответствует модели.

Опечатки sukc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...