У меня есть редактируемый combobox, где я использую ItemTemplate, который использует MultiBinding. Элементы, отображаемые при увеличении отображения со списком, я ожидаю. Однако, когда выбран элемент, вместо него отображается текст. Я видел сообщения, которые предлагают переопределить ToString(), но я хотел бы избежать этого, если это возможно.WPF Редактируемый ComboBox с многосвязным отображением типа объекта, когда он выбран
Объект, к которому я привязан, представляет собой коллекцию объектов UserDetail, среди других UserDetail имеет имя First и Last Name и BarcodeID, которые я показываю как строку для каждого элемента в ComboBox. Я хочу отобразить ту же строку, что и выбранный элемент. Вместо этого я вижу MyNameSpace.UserDetail
Вот xaml для моего списка. Скажите, пожалуйста, где я буду неправильно:
<ComboBox IsEditable="True" IsReadOnly="False" Name="myUser"
TextBoxBase.TextChanged="myCombo_TextChanged"
SelectionChanged="myCombo_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{1}, {0}, {2}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
<Binding Path="BarcodeId" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
FYI, The BarcodeID является для дополнительного считывателя штрих-кодов значком.
Поскольку я использую читателя USB штрих-кода я думаю, что нужно выпадающий редактируемой, так как сканер штрих-кодов выглядит точно так же, как клавиатура в ComboBox. Кстати, я задаю этот вопрос от имени другого разработчика. Я так и не использовал считыватель штрих-кода. FYI, я попытался переопределить метод ToString() на моем объекте EntityFramework и работал как ожидалось. Возможно, мне придется рассмотреть метод расширения, предполагая, что я могу сделать переопределения в методе расширения. – KyleLib
Вы попробовали? IsEditable не означает, что вы думаете. –
Апологеты за отказ от этого. Проект закончился отменой. – KyleLib