常に優先アイテムがドロップダウンリストにあるとは限らない編集可能なコンボボックスがあります。
SelectedValueにバインドされた文字列に伝播されるテキストボックスにテキストを手動で入力できるようにしたいと思います。
現在、SelectedValueにバインドされた文字列は、入力された値がComboBoxアイテムの値の1つである場合にのみ更新されます。
ComboBoxリストで使用できないカスタム値を手動で入力し、バインドされた値に適切に伝播できるようにするにはどうすればよいですか?
回答:
私は昨日と今日これをやっていたところ、次のようになります。
コンボボックスを設定する IsEditable="true"
にバインドする代わりに、コンボボックスのプロパティにSelectedItemバインドしTextます
文字列だけでなくカスタムオブジェクトにバインドする場合は、も設定する必要がありますTextSearch.TextPath="NameOfField"。これにより、テキスト検索動作が機能し、このプロパティもテキストボックスに表示されます。
全体として、私は次のようなものになりました:
<ComboBox x:Name="c"
IsEditable="True"
IsTextSearchEnabled="True"
IsTextSearchCaseSensitive="False"
StaysOpenOnEdit="True"
Text="{Binding NameOnViewModel}"
TextSearch.TextPath="NameOnChildItems"
ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource DataTemplate}" />
<TextBlock Text="{Binding ElementName=c,Path=Text}" />
ComboのTextプロパティへのバインディングを設定することも十分です。
<ComboBox IsTextSearchEnabled="True" IsEditable="True"
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />