#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.