如何验证wpf绑定是否属于真实属性?

时间:2009-04-17 13:06:53

标签: c# .net wpf unit-testing

我想要一种简单的方法来确保我在xaml文件中声明的所有绑定都转到了真正的属性。更好的是,我想在单元测试中实例化我的wpf窗口,并调用一个方法来确保绑定是正确的。

不幸的是,如果我出错了,wpf甚至不会抛出异常。这使我在QA阶段“发现”问题的负担。

有没有人知道我可以更好地验证我的绑定的方法?

2 个答案:

答案 0 :(得分:4)

次优的方法是在可视化树中搜索所有依赖项属性,然后检查:

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

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

如果statusUnattached,则表达式尚未解决。

当然,您不希望在生产应用程序中执行此操作,但在调试或集成测试方案中可能有意义。

答案 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更详细地描述了这一点。