这应该很容易,但它不起作用。我有一个绑定到列表的 WPF 组合框。
- 这些项目填充得很好
- 我希望第一个项目在启动时显示。
- 然而!如果 SelectedIndex 设置为 0 或其他任何值,则它保持空白。
沃兹普?
代码结果:表单加载时未选择任何项目。:-(
这应该很容易,但它不起作用。我有一个绑定到列表的 WPF 组合框。
沃兹普?
代码结果:表单加载时未选择任何项目。:-(
我认为问题在于 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;
}
我倾向于对 DataContext 使用基于 ObservableCollection 的数据类型。