我们来举个例子。
<ComboBox x:Name="cmbTest" IsEditable="False">
<ComboBoxItem Content="7"/>
<ComboBoxItem Content="ab"/>
<ComboBoxItem Content="abc 1"/>
<ComboBoxItem Content="abc"/>
<ComboBoxItem Content="8 (1)"/>
<ComboBoxItem Content="8 (2)"/>
<ComboBoxItem Content="9"/>
<ComboBoxItem Content="8"/>
<ComboBoxItem Content="100"/>
<ComboBoxItem Content="10"/>
<ComboBoxItem Content="1"/>
</ComboBox>
字符串
然后尝试代码中的每一行:
cmbTest.Text = "7"; //Correctly selected, .SelectedIndex = 0
cmbTest.Text = "ab"; //Correctly selected, .SelectedIndex = 1
cmbTest.Text = "abc 1"; //Correctly selected, .SelectedIndex = 2
cmbTest.Text = "abc"; //Nothing selected, .SelectedIndex = -1
cmbTest.Text = "8 (1)"; //Correctly selected, .SelectedIndex = 4
cmbTest.Text = "8 (2)"; //Correctly selected, .SelectedIndex = 5
cmbTest.Text = "9"; //Correctly selected, .SelectedIndex = 6
cmbTest.Text = "8"; //Nothing selected, .SelectedIndex = -1
cmbTest.Text = "100"; //Correctly selected, .SelectedIndex = 8
cmbTest.Text = "10"; //Nothing selected, .SelectedIndex = -1
cmbTest.Text = "1"; //Nothing selected, .SelectedIndex = -1
型
任何以任何前一项的子字符串开头的项都未正确选择。
当IsEditable=True
。项目显示/选择正确,但返回为SelectedIndex
(同上)。
除了迭代和使用SelectedIndex
来选择一个项目(我做了什么来修复这个问题),有没有办法修复这个行为?也许我错过了什么?
1条答案
按热度按时间qoefvg9y1#
我还经历了默认组合框的糟糕UX配置。
我不知道你想要的对不对,但我是这样解决的。
字符串
这个想法的核心是当用户认为他们已经做出了选择时,向用户给予适当的反馈(当'LostFocus'事件触发时)。
型