如何强制 WPF 绑定刷新?

我有一个组合框与项目源附加使用简单的绑定。有没有办法刷新这个绑定一旦组合框加载?

150963 次浏览

可以使用绑定表达式:

private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}

但是 正如布林德梅斯所说也可以触发更改通知,如果您的集合实现了 INotifyCollectionChanged(例如在 ObservableCollection<T>中实现的) ,那么它将进行同步,因此您不需要执行任何此类操作。

尝试使用 BindingExpression.UpdateTarget()

如果您使用 mvvm 并且您的项目源位于您的 vm 中。只需在需要刷新时为集合属性调用 INotifyPropertyChanged 即可。

OnPropertyChanged(nameof(YourCollectionProperty));

为了增加我的2分钱,如果你想用 Control 的新值更新你的数据源,你需要调用 UpdateSource()而不是 UpdateTarget():

((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();

多绑定友好版本..。

private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}

我从后端获取数据,用一行代码更新屏幕。成功了。不确定,为什么我们需要实现 Interface。(视窗10,UWP)

    private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}