2013-07-16 45 views
6

Đây là tình hình ban đầu:WPF ComboBox: Wrong Item được hiển thị

XAML:

<ComboBox Grid.Row="0" 
      Grid.Column="1" 
      Margin="0,3" 
      HorizontalAlignment="Stretch" 
      DisplayMemberPath="DisplayText" 
      ItemsSource="{Binding ObjectSource}" /> 

ViewModel:

public Collection<MyObjects> ObjectSource 
{ 
    get 
    { 
     return this.objectSource; 
    } 

    set 
    { 
     this.SetProperty(ref this.objectSource, value); 
    } 
} 

Đối tượng My chứa tên (string), có hiệu lực từ (dateTime) và một displayText (chuỗi chỉ nhận được) kết hợp tên và hợp lệ để hiển thị.

Trong tình huống dễ dàng này, tôi có thể mở hộp tổ hợp xem tất cả các mục nhập, sau khi chọn nó cũng hiển thị đúng displaytext bên trong combobox. Bây giờ tôi mở lại vùng thả xuống và chọn một mục khác. Kết quả là mục bị cắt chuyển sang (vì bạn có thể thấy mục được đánh dấu cao khi mở lại mục thả xuống). Nhưng mục được hiển thị bên trong combobox không thay đổi, vẫn còn DisplayText của lựa chọn đầu tiên.

Screenshot of the result situation

Hiện ai có một ý tưởng cho tôi lý do tại sao các combobox không cập nhật? Cảm ơn trước

Chỉnh sửa: Cảm ơn tất cả vì sự giúp đỡ của họ. Vấn đề là một sự ghi đè lỗi của Equals.

+0

bạn có ghi đè Bằng không? – blindmeis

+0

tôi đã kiểm tra vấn đề của bạn nhưng trong trường hợp của tôi tất cả mọi thứ chỉ làm việc tốt .. có thể là một vấn đề mà bằng cách nào đó combobox của bạn là nhận được làm mới hoặc nó có thể là bộ sưu tập của bạn .. chỉ cần kiểm tra nó bằng cách sử dụng điểm break .. – loop

+0

hoàn toàn mọi điều đang hoạt động tốt trên hệ thống của tôi. – Betty

Trả lời

1

chỉ để hoàn thành :)

bạn phải kiểm tra hàm Equals() và đảm bảo rằng không bị lỗi. tôi có cùng một sự cố với hộp danh sách những ngày này.

+0

btw cảm thấy tự do để đăng cả hai phương pháp (tốt và xấu) trong bài viết của tôi. – blindmeis

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