我想要一种简单的方法来确保我在xaml文件中声明的所有绑定都转到了真正的属性。更好的是,我想在单元测试中实例化我的wpf窗口,并调用一个方法来确保绑定是正确的。
不幸的是,如果我出错了,wpf甚至不会抛出异常。这使我在QA阶段“发现”问题的负担。
有没有人知道我可以更好地验证我的绑定的方法?
答案 0 :(得分:4)
次优的方法是在可视化树中搜索所有依赖项属性,然后检查:
var bindingExpression = BindingOperations.GetBindingExpressionBase(dependencyObject, dependencyProperty);
if (bindingExpression != null)
{
var status = bindingExpression.Status;
}
如果status
为Unattached
,则表达式尚未解决。
当然,您不希望在生产应用程序中执行此操作,但在调试或集成测试方案中可能有意义。
答案 1 :(得分:1)
数据绑定错误显示在Visual Studio“输出”窗口中。例如,假设我想将TextBlock绑定到Window的Title属性,但我错误地将“Title”键入为“Ritle”。我将在输出窗口中看到这一点:
System.Windows.Data错误:39:BindingExpression路径错误:'对象'''MessageWindow'(Name ='Window')'上找不到'Ritle'属性。 BindingExpression:路径= Ritle; DataItem ='MessageWindow'(Name ='Window'); target元素是'TextBlock'(Name ='WindowTitle'); target属性是'Text'(类型'String')
您可以使用跟踪源更好地控制如何报告这些消息。 Bea Stollnitz的This article更详细地描述了这一点。