Как принудительно обновить привязку WPF? - PullRequest
99 голосов
/ 15 апреля 2011

У меня есть комбинированное окно с источником элементов, прикрепленным с помощью простой привязки. Есть ли способ обновить эту привязку после загрузки поля со списком?

Ответы [ 6 ]

178 голосов
/ 15 апреля 2011

Вы можете использовать выражения привязки:

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

Но , как заметил Блиндмейс , вы также можете запускать уведомления об изменениях, в дальнейшем, если ваша коллекция реализует INotifyCollectionChanged (например, реализовано в ObservableCollection<T>) он будет синхронизироваться, поэтому вам не нужно делать ничего из этого.

50 голосов
/ 15 апреля 2011

, если вы используете mvvm и ваш ресурс находится в вашей виртуальной машине.просто вызовите INotifyPropertyChanged для вашего свойства коллекции, когда вы хотите обновить.

OnPropertyChanged("YourCollectionProperty");
26 голосов
/ 09 февраля 2014

Чтобы добавить мои 2 цента, если вы хотите обновить свой источник данных новым значением вашего элемента управления, вам нужно позвонить UpdateSource() вместо UpdateTarget():

((TextBox)sender).GetBindingExpression(ComboBox.TextProperty).UpdateSource();
8 голосов
/ 08 июня 2016

MultiBinding дружественная версия ...

private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
    BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}
6 голосов
/ 15 апреля 2011

Попробуйте использовать BindingExpression.UpdateTarget()

0 голосов
/ 16 октября 2016

Я выбирал данные из бэкэнда и обновлял экран одной строкой кода. Это сработало. Не уверен, зачем нам нужен интерфейс. (windows 10, UWP)

    private void populateInCurrentScreen()
    {
        (this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
        this.Bindings.Update();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...