2010-09-18 67 views
64

Tôi có hộp tổ hợp có thể chỉnh sửa không phải lúc nào cũng là mục ưa thích nằm trong danh sách thả xuống.ComboBox có thể chỉnh sửa với giá trị ràng buộc không có trong danh sách

Tôi muốn có khả năng nhập văn bản theo cách thủ công vào hộp văn bản được truyền tới chuỗi được gắn với SelectedValue.

Ngay bây giờ, chuỗi được ràng buộc với SelectedValue chỉ được cập nhật nếu giá trị được nhập là của giá trị trong mục ComboBox.

Làm cách nào để cho phép giá trị tùy chỉnh không có sẵn trong danh sách ComboBox được nhập theo cách thủ công và được truyền chính xác đến giá trị bị ràng buộc?

Trả lời

106

Tôi chỉ làm này ngày hôm qua và ngày hôm nay và nó trông giống như sau:

  1. thiết lập các combobox IsEditable="true"

  2. thay vì ràng buộc để SelectedItem, ràng buộc với Text tài sản của combobox

  3. nếu bạn đang ràng buộc với một đối tượng tùy chỉnh thay vì chỉ là chuỗi, bạn cũng cần đặt TextSearch.TextPath="NameOfField". Điều này cho phép hành vi tìm kiếm văn bản hoạt động và cũng hiển thị thuộc tính này trong hộp văn bản.

Tất cả trong tất cả, tôi đã kết thúc với một cái gì đó như:

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

oh và nếu bạn không sử dụng ItemTemplate, bạn có thể sử dụng DisplayMemberPath = "Name" thay vì sử dụng DataTemplate. –

+1

tuyệt vời! Nó cũng hoạt động với các số – Roberto

24

Thiết lập ràng buộc để văn bản tài sản của Combo sẽ đủ là tốt.

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

Hoạt động hoàn hảo tìm kiếm để gắn kết với một danh sách các chuỗi. –

Các vấn đề liên quan