0

我的 Window.xaml 中有一个组合框,我使用它的属性 SelectedIndex 进行初始化,其值为 0,它的属性 SelectedItem 具有与视图模型属性的绑定。

听起来很简单,基本上是这样的:

<ComboBox SelectedItem = "{Binding MyChosenItem}" SelectedIndex="0" ItemsSource={Binding MyList} />

现在在我的 MyList 中,这是一个简单的字符串列表,第一个条目看起来像这样:“---NULL--”。它只是一个静态条目,表明用户尚未选择任何内容。

一旦我启动我的应用程序,组合框将其 SelectedItem 设置为“---NULL---”,因为 SelectedIndex = 0 并且 MyChosenItem 也设置为“---NULL---”,因为那是组合框的 SelectedItem。

到目前为止一切都很好,但现在我想撕裂组合框以知道一旦我在 MyChosenItem 中有一个值,组合框可能不会将选择设置为“---NULL---”。

这是一个例子:

如果 MyChosenItem = null 则 Combobox 应选择“---NULL---”作为标准值,但当 MyChosenItem =“BMW”时,组合框应选择 BMW 作为所选项目,这是 MyList 中的第 4 个项目。

如何在 WPF 中执行此操作?问题是 SelectedIndex 总是尝试将第一项设置为选定项,但我需要第四项。在设置第一个项目后,我是否需要时间旅行到该点,然后将组合框的 SelectedItem 设置为第四个?

有任何想法吗?过去有人偶然发现过这个吗?

编辑:我忘了提到组合框是第三方控件,他们以某种方式手动设置 SelectedIndex = 0 所以我没有机会改变它。因此,我请求你们坚持这个问题中给出的要求,我希望有人想办法解决这个问题,或者至少是一个很好的解决方法。

4

1 回答 1

0

首先SelectedIndex是基于 0,所以如果你想选择你应该使用的第一个项目SelectedIndex=0。在这种情况下通常要做的是初始化MyChosenItem="---NULL--",而不是nullComboBox应该看起来像:

<ComboBox SelectedItem ="{Binding MyChosenItem, Mode=TwoWay}"
 ItemsSource={Binding MyList}/>

您不再需要了SelectedIndex,因为您的初始TwoWay BindingtoMyChosenItem将更新SelectedItem为“---NULL--”。

于 2013-05-23T09:47:54.140 回答