我在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所以我没有机会改变它。因此,我请求你们坚持这个问题的要求,我希望有人能找到解决这个问题的方法,或者至少是一个很好的解决方法。
答案 0 :(得分:0)
首先SelectedIndex
为0,所以如果你想选择第一项你应该使用SelectedIndex=0
。
在这种情况下通常执行的操作是初始化MyChosenItem="---NULL--"
而非null
,而您的ComboBox
应如下所示:
<ComboBox SelectedItem ="{Binding MyChosenItem, Mode=TwoWay}"
ItemsSource={Binding MyList}/>
您不再需要SelectedIndex
,因为您的初始TwoWay Binding
到MyChosenItem
会将SelectedItem
更新为“--- NULL - ”。