私は次のように定義された ComboBox を使用しています:
<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>
..オブジェクトのリストを「名前」プロパティ別に表示します。次の動作を観察しています。
- ドロップダウンの項目をクリックすると、componentsComboBox.SelectedValue (および .SelectedItem) がクリックされた項目に対応します。わかった!
- アイテムの名前の入力を開始すると、入力中にオートコンプリートが入力され、.SelectedValue (および .SelectedItem) がオートコンプリートされたアイテムに対応します。すごい!
- アイテムの名前の入力を開始すると、入力中にオートコンプリートが入力され、実際に入力したものだけに切り詰めるために削除を押します。いいえ!悪いWPF!悪い!
- テキストボックス部分の末尾から文字を削除すると 3 と同様の動作
本質的に、次のように定義された 2 つのオブジェクトを含むリストがあるとします。
{ new Component() { Name = "COMPONENT1"},
new Component() { Name = "COMPONENT2"} }
値が欲しい:
- コンポーネント1
- コンポーネント2
ドロップダウン部分に表示され、ユーザーが「COMP」と入力した場合、新しい値が入力されたことを認識したいのですが、そのままでは、コントロールは COMPONENT1 を選択したように見えます。
ここで何が欠けていますか?