Listede olmayan değere bağlanan düzenlenebilir ComboBox


81

Her zaman tercih edilen öğenin açılır listede olmadığı düzenlenebilir birleşik giriş kutum var.

SelectedValue'ye bağlı dizeye yayılan metin kutusuna manuel olarak metin girme olanağına sahip olmak istiyorum.

Şu anda SelectedValue'ye bağlı dize yalnızca girilen değer ComboBox öğelerindekilerden biri ise güncellenir.

ComboBox listesinde bulunmayan özel değerlerin manuel olarak girilmesine ve bağlı değere doğru şekilde yayılmasına nasıl izin verebilirim?

Yanıtlar:


135

Bunu dün ve bugün yapıyordum ve şuna benziyor:

  1. birleşik giriş kutusunu ayarla IsEditable="true"

  2. bağlanmak yerine , birleşik giriş kutusunun özelliğine SelectedItembağlanınText

  3. sadece dizeler yerine özel bir nesneye bağlanıyorsanız, ayrıca ayarlamanız gerekir TextSearch.TextPath="NameOfField". Bu, metin arama davranışının çalışmasına izin verir ve bu özelliği metin kutusunda da gösterir.

Sonuç olarak, şöyle bir şey elde ettim:

<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}" />

4
oh, ve ItemTemplate kullanmıyorsanız, DataTemplate kullanmak yerine DisplayMemberPath = "Name" kullanabilirsiniz.
John Gardner

28

Bağlamayı Combo'nun Metin özelliğine ayarlamak da yeterli olacaktır.

<ComboBox  IsTextSearchEnabled="True"    IsEditable="True" 
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />

1
Bir dizge listesine bağlanmak için mükemmel bir şekilde çalışır.
Herman Cordes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.