簡體   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