如何强制WPF绑定刷新?

问题描述

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

解决方法

您可以使用绑定表达式:
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美分,如果您想使用控件的新值更新数据源,则需要调用call4ѭ而不是
UpdateTarget()
((TextBox)sender).GetBindingExpression(ComboBox.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();
    }