Как установить (несвязанный) SelectedIndex для WPF Windows.Controls.ComboBox? - PullRequest
1 голос
/ 02 октября 2009

Это должно быть легко, но это не работает. У меня есть список со списком WPF.

  • элементы заполняются очень хорошо
  • Я хочу, чтобы первый элемент отображался при запуске.
  • Однако! Если SelectedIndex установлен в 0 или что-либо еще, он остается пустым.

Wozzup

Результат кода: при загрузке формы элемент не выбран. :-(

Ответы [ 2 ]

1 голос
/ 02 октября 2009

Я думаю, что проблема будет в том, что элементы ComboBox заполняются в фоновом потоке (связыванием), и, таким образом, в то время, когда вы устанавливаете SelectedIndex в 0, в списке нет никаких элементов.

В этом случае хитрость заключается в обработке события StatusChanged на ItemContainerGenerator в ComboBox и установке там выбранного индекса:

comboBox1.ItemContainerGenerator.StatusChanged += ItemContainerGenerator_StatusChanged;

void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
    if (comboBox1.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
    {
        return;
    }

    // unhook the event - we don't need it now
    comboBox1.ItemContainerGenerator.StatusChanged -=
        ItemContainerGenerator_StatusChanged;

    comboBox1.SelectedIndex = 0;
}
0 голосов
/ 02 октября 2009

Я склонен использовать типы данных на основе ObservableCollection для DataContext.

...