如何强制WPF绑定刷新?

时间:2011-04-15 11:46:00

标签: c# wpf data-binding

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

6 个答案:

答案 0 :(得分:175)

您可以使用绑定表达式:

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

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

答案 1 :(得分:49)

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

OnPropertyChanged("YourCollectionProperty");

答案 2 :(得分:25)

要添加我的2美分,如果您想使用控件的新值更新数据源,则需要拨打UpdateSource()而不是UpdateTarget()

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

答案 3 :(得分:8)

MultiBinding友好版......

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

答案 4 :(得分:6)

尝试使用BindingExpression.UpdateTarget()

答案 5 :(得分:-1)

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

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