Добавить статический элемент в RadComboBox в WPF

#c# #wpf #xaml #telerik

#c# #wpf #xaml #telerik

Вопрос:

У меня есть набор из двух каскадных RadComboBoxes — когда один установлен, другой заполняется. Для второго выпадающего ItemSource списка установлено значение a CompositeCollection , которое привязывается к an ObservableCollection в viewmodel.

Я пытаюсь добавить статическое значение в список. Идея заключается в том, что CompositeCollection может меняться, но всегда должен быть ComboBoxItem доступен один статический объект с именем Other .

CustomerContact.cs клиентконтакт.cs:

 public class CustomerContact
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
}
 

CustomerContactSource Клиентский контакт:

 <CollectionViewSource x:Key="CustomerContactSource" Source="{Binding CustomerSite.CustomerContacts}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="Name"/>
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>
 

OtherCustomerContact:

 public CustomerContact OtherCustomerContactItem => new CustomerContact
{
    Name = "Other", 
    Email = string.Empty, 
    PhoneNumber = string.Empty 
};
 

Страница Xaml:

 <telerik:RadComboBox ItemTemplate="{StaticResource ComboBoxItemTemplate}"
                     SelectedItem="{Binding CustomerContact}"                                                     
                     Text="{Binding Source=CustomerContact, Path=Name}">
    <telerik:RadComboBox.ItemsSource>
        <CompositeCollection>
            <CollectionContainer Collection="{Binding Source={StaticResource CustomerContactSource}}"/>
            <TextBlock Text="{Binding Source=OtherCustomerContactItem, Path=Name}"/>                                                          
        </CompositeCollection>                                   
    </telerik:RadComboBox.ItemsSource>
</telerik:RadComboBox>
 

Я продолжаю получать сообщение об ошибке, в котором говорится, что не найден конвертер для TextBlock в CustomerContact. Что я делаю не так? В RadComboBox есть ItemSource, представляющий собой список CustomerContact , и один неизменяемый элемент, который также имеет тип CustomerContact .

Любая помощь будет очень признательна!!!

Комментарии:

1. разместите свой код viewmodel .. или там, где существует ваш объект OtherCustomerContactItem.. Я думаю, что он не может правильно связать OtherCustomerContactItem.

Ответ №1:

В RadComboBox есть ItemSource, представляющий собой список CustomerContact и один неизменяемый элемент, который также имеет тип CustomerContact .

Эта последняя часть не выполняется. Вы оборачиваете элемент в текстовый блок, и это тот тип, который видит XAML. Выдает ошибку из-за отсутствия TypeConverter.

Вы могли бы обернуть элемент:

  • в собственной коллекции (контейнере).
  • в RadComboBoxItem в строках того, что сделано здесь для ListBox.