У меня есть поле со списком с источником источника, связанным с использованием простой привязки. Есть ли способ обновить эту привязку после загрузки комбо-поля?
Как принудительно привязать WPF к обновлению?
Ответ 1
Вы можете использовать выражения привязки:
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
Но как отметил Blindmeis, вы также можете активировать уведомления об изменениях, если ваша коллекция реализует INotifyCollectionChanged
(например, реализована в ObservableCollection<T>
), она будет синхронизироваться так вам не нужно ничего делать.
Ответ 2
если вы используете mvvm, а ваш источник items находится в вашем vm. просто вызовите INotifyPropertyChanged для вашего свойства коллекции, если вы хотите обновить.
OnPropertyChanged("YourCollectionProperty");
Ответ 3
Чтобы добавить мои 2 цента, если вы хотите обновить свой источник данных новым значением вашего элемента управления, вам нужно вызвать UpdateSource()
вместо UpdateTarget()
:
((TextBox)sender).GetBindingExpression(ComboBox.TextProperty).UpdateSource();
Ответ 4
Универсальная версия MultiBinding...
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}
Ответ 5
Попробуйте использовать BindingExpression.UpdateTarget()
Ответ 6
Я извлекал данные из бэкэнд и обновлял экран только одной строкой кода. Это сработало. Не уверен, почему нам нужно реализовать интерфейс. (окна 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}