如何强制WPF绑定刷新?
我有一个combobox与项目源使用简单的绑定附加。 一旦加载combobox,有什么办法刷新这个绑定?
你可以使用绑定expression式:
private void ComboBox_Loaded(object sender, RoutedEventArgs e) { ((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty) .UpdateTarget(); }
但是, 正如Blindmeis指出的,你也可以触发更改通知,如果你的集合实现INotifyCollectionChanged
(例如在ObservableCollection<T>
),它将同步,所以你不需要做任何这样的事情。
如果你使用mvvm而你的itemssource位于你的vm中。 当您想要刷新时只需要调用INotifyPropertyChanged为您的集合属性。
OnPropertyChanged("YourCollectionProperty");
要添加我的2美分,如果要用Control的新值更新数据源,则需要调用UpdateSource()
而不是UpdateTarget()
:
((TextBox)sender).GetBindingExpression(ComboBox.TextProperty).UpdateSource();
尝试使用BindingExpression.UpdateTarget()
MultiBinding友好版本…
private void ComboBox_Loaded(object sender, RoutedEventArgs e) { BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget(); }
我从后端获取数据,并用一行代码更新了屏幕。 有效。 不知道,为什么我们需要实现接口。 (Windows 10,UWP)
private void populateInCurrentScreen() { (this.FindName("Dets") as Grid).Visibility = Visibility.Visible; this.Bindings.Update(); }