[英]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.