Я хочу привязать поле со списком к списку Device, List. Я использую,Связывание WPF ComboBox с списком <MyClass> где MyClass не имеет свойств, просто методы
m_ctrlCB.DataContext = m_List;
m_ctrlCB.DisplayMemberPath = "ToString()";
m_ctrlCB.SelectedValuePath = "ToString()"; // do I even need this?
У меня нет никаких свойств в Приспособление для привязки, и это не мой класс. Тем не менее, они переопределяют ToString для того, что подходит для отображения в combobox (что-то вроде: «Class Device. Number 1».
Однако, то, что я написал, не работает. То, что я вижу в поле со списком, пустое элементы. Мой выбор. Событие смены событий работает. И e.AddedItems [0] действительно является устройством, поэтому я близок. Как я могу получить что-то значимое для отображения в поле combox.
Я полагаю, я был бы счастлив создавая ComboBoxItems и добавляя их в ComboBox, если это необходимо. Но если я иду по этому маршруту, как мне настроить материал Display и сам фактический объект, чтобы я мог его получить, когда пользователь выбирает его из combobox?
Бонусный вопрос . Если я Вместо использования ToString я хочу использовать GetDeviceNumber() и объединить его с моим собственным тестом, чтобы пользователь увидел, Устройство №1 Устройство №2 как бы это сделать?
спасибо, Dave
karmicpuppet, Спасибо за ответ. Кажется, что все работает хорошо. ИСКЛЮЧАЮЩИЕ Я получаю в элементах combobox, что я настроил в DeviceValueConvert И фактическое значение ToString. Он добавил это без моего запроса. Поэтому я получаю что-то вроде: Class Device. Номер 1 Устройство 1, тогда как я должен просто получить устройство 1. Идеи? – Dave
Я не уверен, что понимаю. Что именно вы хотите отображать в элементах combobox? Вы хотите отобразить ToString()? Или DeviceValue? Если вы хотите просто отобразить ToString(), вы должны делать что-то вроде в ItemTemplate.С другой стороны, если вы хотите показать DeviceValue, ваш XAML должен быть –
ASanch
Я думаю, что ваше использование Button путало меня. Мне удалось уйти просто с TextBlock и установить Не знаете, почему у вас была кнопка в вашей разметке. Но спасибо, ты решил мою проблему. Отмечено как ответ! –
Dave