繁体   English   中英

如何强制刷新 WPF 绑定?

[英]How to force a WPF binding to refresh?

我有一个使用简单绑定附加项目源的组合框。 加载组合框后,有什么方法可以刷新此绑定?

您可以使用绑定表达式:

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

但是正如 Blindmeis 指出的那样,您还可以触发更改通知,如果您的集合实现INotifyCollectionChanged (例如在ObservableCollection<T>中实现),它将同步,因此您不需要执行任何操作。

如果您使用 mvvm 并且您的 itemssource 位于您的虚拟机中。 当您想要刷新时,只需为您的集合属性调用 INotifyPropertyChanged。

OnPropertyChanged(nameof(YourCollectionProperty));

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

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

MultiBinding 友好版本...

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

尝试使用BindingExpression.UpdateTarget()

我从后端获取数据并只用一行代码更新了屏幕。 有效。 不确定,为什么我们需要实现接口。 (Windows 10,UWP)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM