Как я могу проверить привязки wpf к реальным свойствам? - PullRequest
5 голосов
/ 17 апреля 2009

Я бы хотел, чтобы простой способ гарантировать, что все привязки, которые я объявил в моих файлах xaml, переходят в реальные свойства. Более того, я хотел бы создать экземпляр моего окна wpf в модульном тесте и вызвать метод, чтобы убедиться, что привязки верны.

К сожалению, wpf даже не выдает исключение, если я что-то не так. Это оставляет мне бремя «обнаруживать» проблемы на этапе обеспечения качества.

Кто-нибудь знает, как я могу лучше проверить свои привязки?

Ответы [ 2 ]

4 голосов
/ 17 апреля 2009

Неоптимальным способом будет поиск в визуальном дереве всех свойств зависимостей, а затем проверка:

var bindingExpression = BindingOperations.GetBindingExpressionBase(dependencyObject, dependencyProperty);

if (bindingExpression != null)
{
    var status = bindingExpression.Status;
}

Если status равно Unattached, то выражение не разрешено.

Конечно, вы не захотите делать это в производственном приложении, но это может иметь смысл в сценарии отладки или тестирования интеграции.

1 голос
/ 17 апреля 2009

Ошибки привязки данных отображаются в окне вывода Visual Studio. Например, скажем, я хочу привязать TextBlock к свойству Title окна, но я неправильно набрал «Title» как «Ritle». Я увижу это в окне вывода:

System.Windows.Data Ошибка: 39: ошибка пути BindingExpression: свойство 'Ritle' не найдено в 'object' '' MessageWindow '(Name =' Window ')'. BindingExpression: Path = Ritle; DataItem = 'MessageWindow' (Name = 'Window'); целевой элемент - TextBlock (Name = 'WindowTitle'); Целевым свойством является «Текст» (тип «Строка»)

Вы можете получить больше контроля над тем, как сообщать об этих сообщениях, используя источники трассировки. Эта статья Бе Столльниц описывает это более подробно.

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