Обновите все привязки в UserControl сразу - PullRequest
7 голосов
/ 27 апреля 2009

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 27 апреля 2009

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

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

К вашему сведению, сброс свойства на его значение (т.е. DataContext = DataContext) не будет работать.

1 голос
/ 15 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...