Wpf在ComboBox中旅行的时间

时间:2013-05-23 09:34:44

标签: wpf wpf-controls

我在Window.xaml中有一个组合框,我用它的属性SelectedIndex初始化,其值为0,并且它的属性SelectedItem具有绑定到viewmodel属性。

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

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

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

一旦我开始我的应用程序,组合框将其SelectedItem设置为“--- NULL ---”,因为SelectedIndex = 0并且更进一步MyChosenItem也被设置为“--- NULL ---”,因为那是组合框的SelectedItem

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

以下是一个例子:

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

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

有什么想法吗?在过去,有人偶然发现了这个吗?

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

1 个答案:

答案 0 :(得分:0)

首先SelectedIndex为0,所以如果你想选择第一项你应该使用SelectedIndex=0。 在这种情况下通常执行的操作是初始化MyChosenItem="---NULL--"而非null,而您的ComboBox应如下所示:

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

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