我使用由定義的組合框:我可以使WPF組合框對待子字符串作爲新值嗎?
<ComboBox Grid.Column="2" Height="29" HorizontalAlignment="Left" Margin="137,192,0,0" Name="componentsComboBox" VerticalAlignment="Top" Width="224"
IsEditable="True"
TextSearch.TextPath="Name">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
通過他們的「名稱」屬性..to顯示對象的列表。我正在觀察以下行爲:
- 在下拉列表中單擊一個項目,componentsComboBox.SelectedValue(和.SelectedItem)對應於單擊的項目。好!
- 開始鍵入項目的名稱,當您鍵入時,自動完成填充,.SelectedValue(和.SelectedItem)對應於自動完成的項目。大!
- 開始鍵入項目的名稱,當您鍵入時自動完成填充,命中刪除僅截取到您實際鍵入的內容,.SelectedValue和.SelectedItem STILL對應於自動完成的項目。沒有!壞的WPF!壞!
- 類似行爲,以3如果從文本框部分
在本質上,結束刪除字符,如果我有一個包含由定義的兩個對象列表,例如,
{ new Component() { Name = "COMPONENT1"},
new Component() { Name = "COMPONENT2"} }
我想要的值:
- COMPONENT1
- COMPONENT2
出現在下拉部分,如果用戶輸入「COMP」我想認識他們已經進入了一個新的價值,但因爲它代表權的控制,使它看起來就像他們選擇COMPONENT1。
我在這裏錯過了什麼?
這是我已經有的行爲(IsEditable);它沒有解決爲什麼如果我在ComboBox中鍵入「02」,然後從結尾刪除「2」(在ComboBox中只留下「0」),ComboBox.SelectedItem,.SelectedIndex和。 SelectedValue全部對應於值「01」,而我期望它們是.SelectedItem = null,.SelectedValue = null,.SelectedIndex = -1(因爲它們是如果我鍵入的值不是*的一個子字符串現有的值;這是我想模仿值爲「0」的行爲 - 除非有更好的/支持的區分方式)。 – 2012-08-07 20:06:59