Обновить все привязки в UserControl сразу

мне нужно обновить все привязки на моем UserControl, когда его видимость изменится на видимую. Почти все мои привязки привязаны к свойству DataContext пользовательского элемента управления, поэтому я пытаюсь обновить цель этой привязки:

BindingOperations.GetBindingExpressionBase(this, UserControl.DataContextProperty).UpdateTarget();

но я null в результате GetBindingExpression(..) метод, и мне интересно, использую ли я это неправильно.

кроме того, есть ли другой хороший способ обновить все привязки на элементе управления (которые используют DataContext в качестве источник.)

2 ответов


Ну, ты может просто повторно назначить DataContext:

var dataContext = DataContext;
DataContext = null;
DataContext = dataContext;

FYI, сброс свойства до его значения (т. е.DataContext = DataContext) не работает.


вы используете BindingOperations.Метод GetBindingExpressionBase для неправильного свойства. Вы должны использовать его в свойствах, которые привязываются к свойству DataContext, а не к самому свойству DataContext.