Làm cách nào để hủy lựa chọn người dùng trong Hộp danh sách WPF dữ liệu? Thuộc tính nguồn được đặt chính xác, nhưng lựa chọn ListBox không đồng bộ.WPF: Hủy bỏ lựa chọn người dùng trong một ListBox databound?
Tôi có ứng dụng MVVM cần hủy lựa chọn người dùng trong Hộp danh sách WPF nếu các điều kiện xác thực nhất định không thành công. Xác nhận được kích hoạt bởi một lựa chọn trong ListBox, chứ không phải bởi một nút Submit.
Thuộc tính ListBox.SelectedItem
được liên kết với thuộc tính ViewModel.CurrentDocument
. Nếu xác thực không thành công, trình thiết lập cho thuộc tính mô hình khung nhìn ra mà không thay đổi thuộc tính. Vì vậy, thuộc tính mà ListBox.SelectedItem
bị ràng buộc không bị thay đổi.
Nếu điều đó xảy ra, trình xem thuộc tính mô hình xem sẽ tăng sự kiện PropertyChanged trước khi thoát, mà tôi đã giả định sẽ đủ để đặt lại ListBox trở lại lựa chọn cũ. Nhưng điều đó không hoạt động - ListBox vẫn hiển thị lựa chọn người dùng mới. Tôi cần phải ghi đè lựa chọn đó và đưa nó trở lại đồng bộ với thuộc tính nguồn.
Chỉ trong trường hợp không rõ ràng, đây là một ví dụ: ListBox có hai mục, Document1 và Document2; Tài liệu 1 được chọn. Người dùng chọn Document2, nhưng Document1 không xác nhận hợp lệ. Thuộc tính ViewModel.CurrentDocument
vẫn được đặt thành Document1, nhưng ListBox hiển thị rằng Document2 được chọn. Tôi cần để có được sự lựa chọn ListBox trở lại Document1.
Dưới đây là ListBox tôi Binding:
<ListBox
ItemsSource="{Binding Path=SearchResults, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=CurrentDocument, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Tôi đã thử sử dụng một callback từ ViewModel (như là một sự kiện) để xem (mà đặt mua đến sự kiện này), để buộc các tài sản SelectedItem trở lại lựa chọn cũ. Tôi vượt qua các tài liệu cũ với sự kiện này, và nó là một trong những chính xác (lựa chọn cũ), nhưng lựa chọn ListBox không thay đổi trở lại.
Vì vậy, làm cách nào để có được lựa chọn ListBox được đồng bộ hóa với thuộc tính mô hình chế độ xem mà thuộc tính SelectedItem
của nó bị ràng buộc? Cảm ơn bạn đã giúp đỡ.
Bộ sưu tập 'SearchResults' có thay đổi bất kỳ lúc nào sau khi kiểm soát được tạo không? Tôi nghĩ rằng có thể có một vấn đề với bộ sưu tập mà các ItemsSource bị ràng buộc để thay đổi bất cứ lúc nào hoặc khi đối tượng SelectedItem đến từ một bộ sưu tập khác nhau. –
Đây là bản sao của http://stackoverflow.com/questions/2608071/wpf-cancel-a-user-selection-in-a-databound-listbox có nhiều câu trả lời hơn, bao gồm câu trả lời liên kết tới http: // blog .alner.net/archive/2010/04/25/canceling-selection-change-in-a-bound-wpf-combo-box.aspx – splintor