1

这应该很容易,但它不起作用。我有一个绑定到列表的 WPF 组合框。

  • 这些项目填充得很好
  • 我希望第一个项目在启动时显示。
  • 然而!如果 SelectedIndex 设置为 0 或其他任何值,则它保持空白。

沃兹普?

代码结果:表单加载时未选择任何项目。:-(

4

2 回答 2

1

我认为问题在于 ComboBox 的项目正在后台线程中填充(通过绑定),因此当您将 SelectedIndex 设置为 0 时,列表中没有任何项目。

如果是这种情况,诀窍是处理 ComboBox 的 ItemContainerGenerator 上的 StatusChanged 事件并在那里设置您选择的索引:

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;
}
于 2009-10-02T06:27:42.957 回答
0

我倾向于对 DataContext 使用基于 ObservableCollection 的数据类型。

于 2009-10-02T08:06:00.420 回答