Tôi có một hộp kết hợp với nguồn mặt hàng được đính kèm bằng cách sử dụng ràng buộc đơn giản. Có cách nào để làm mới liên kết này sau khi hộp kết hợp được tải không?
Tôi có một hộp kết hợp với nguồn mặt hàng được đính kèm bằng cách sử dụng ràng buộc đơn giản. Có cách nào để làm mới liên kết này sau khi hộp kết hợp được tải không?
Câu trả lời:
Bạn có thể sử dụng các biểu thức ràng buộc:
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
Nhưng như Blindmeis lưu ý, bạn cũng có thể kích hoạt các thông báo thay đổi, hơn nữa nếu bộ sưu tập của bạn triển khai INotifyCollectionChanged
(ví dụ: được triển khai trong ObservableCollection<T>
), nó sẽ đồng bộ hóa nên bạn không cần thực hiện bất kỳ thao tác này.
nếu bạn sử dụng mvvm và nguồn hàng của bạn nằm trong vm của bạn. chỉ cần gọi INotifyPropertyChanged cho thuộc tính bộ sưu tập của bạn khi bạn muốn làm mới.
OnPropertyChanged("YourCollectionProperty");
INotifyPropertyChanged
, nhưng bạn sẽ phải giữ cổng ở chế độ riêng tư rằng wrapper và do đó cần phải viết một tài sản và phương pháp cho tất cả mọi thứ trên rằng cổng bạn sử dụng ở những nơi khác trong dự án để đảm bảo rằng các thuộc tính bạn đang quan tâm đến việc thông báo trên luôn đi qua các wrapper
nameof(YourCollectionProperty)
trái ngược với một chuỗi theo nghĩa đen. Điều này ngăn lỗi cấu trúc lại và rõ ràng hơn những gì thực sự được dự định. Đây là khóa học mà bạn không thể sử dụng các CallerMemberName
thuộc tính mà thậm chí còn đẹp hơn
Hãy thử sử dụng BindingExpression.UpdateTarget()
Tôi đang tìm nạp dữ liệu từ chương trình phụ trợ và cập nhật màn hình chỉ với một dòng mã. Nó đã làm việc. Không chắc, tại sao chúng ta cần triển khai Giao diện. (windows 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}