none
Совершенно не понимаю принцип работы ComboBox или как программно выбрать элемент в нем RRS feed

  • Вопрос

  • В окне WPF размещено несколько GUI-элементов: ComboBox(main_comboBox, secondary_comboBox), TextBox(textBox1, textBox2) и др. Элементы secondary_comboBox заданы с помощью XAML, во все остальные элементы информация грузиться из БД. Подгрузили данные в main_comboBox, пользователь выбрал нужный ключевой элемент, начинаем подгружать оставшиеся данные... В TextBox'ы все нормально загрузили, но вот с данными в secondary_comboBox возникают проблемы. Данные в нем должны отображаться в зависимости от значения двух полей типа bit, которые не могут одновременно принимать значение true - если первое поле равно true, то отобразить первый(нулевой) элемент в secondary_comboBox; если второе поле - отобразить второй(первый) элемент; если не то и не другое - третий(второй)[в скобках указана индексация с нуля]. Пробовал это делать через SelectedItem, SelectedValue - все бесполезно, но это и понятно, т.к. эти поля "неактивны" до того момента, пока не зададим ItemsSource(не ясно почему объект ComboBox имеет такую логику). Хотелось бы узнать, каким образом можно решить указанную проблему и зачем было сделано такое ограничение при разработке объекта ComboBox? Крайне не хочется создавать в коде константный список с необходимыми элементами и делать к нему привязку

    • Изменено Maximys33 6 мая 2012 г. 4:16

Ответы

  • А с помощью SelectedIndex пробовали? Дело в том что если вы описывали содержимое данного комбобокса в XAML, то использовали наверное ComboBoxItem, а значит в через SelectedItem, SelectedValue нужно указывать именно объект ComboBoxItem и даже если в его не создавали, а писали например строки, то система сама обернула их в ComboBoxItem а в Content запихнула ваш элемент.

    В общем что бы не мучится используйте просто SelectedIndex, а еще проще сделайте мультибайндинг с привязкой SelectedIndex к вашим полям bit и в конвертере задайте выбор исходя из описанных вами правил (первый True значит индекс 0 и т.д.).


    Влюблен в WPF Не пишу на C#

    • Помечено в качестве ответа Maximys33 6 мая 2012 г. 6:46
    Отвечающий