找到绑定错误

时间:2010-04-09 18:10:52

标签: wpf visual-studio data-binding binding

我正在处理一个输出大量绑定错误的大型WPF应用程序。典型错误如下所示:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')

问题是我不知道应用程序来自哪里。在整个解决方案中搜索AncestorType = {x:Type ItemsControl}并没有必要帮助,因为我仍然不知道哪个结果是罪魁祸首。我试过设置PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.All; 但额外的信息无助于找到有问题的绑定。文件名和行号确实是我需要的。无论如何得到这些信息?我能想到的唯一其他解决方案是为canidates分配名称,然后从那里缩小它。那么,有没有办法在整个解决方案中自动为所有可用的元素分配一个唯一的x:Name?

3 个答案:

答案 0 :(得分:3)

我通常在实际写入错误消息的代码上设置断点。当遇到断点时,我使用Visual Studio可视化工具检查具有绑定错误的对象的可视树。这几乎总能告诉我在我的代码中找到绑定的确切位置并修复它。 (您可以通过安装自定义跟踪侦听器并打破它来确定断点的位置,然后检出调用堆栈。)

我还设计了我的应用程序,通过确保在源完全存在时绑定始终有效来最小化“误报”的数量。

答案 1 :(得分:1)

您何时会看到这些绑定错误?仅在启动期间(或加载新的AddIn或新视图等)。

在这些情况下,我发现这些错误通常是“误报”,因为它们在被绑定的对象被初始化之前被抛出。这肯定是令人讨厌的,但是如果应用程序中的所有内容似乎都被正确绑定(例如,这里,您的菜单似乎有一个正确的Horizo​​ntalContentAlignment),那么我也不会担心太多。 / p>

答案 2 :(得分:0)

听起来像这个Xceed列选择器错误: http://xceed.com/CS/forums/thread/25140.aspx http://xceed.com/CS/forums/ShowThread.aspx?PostID=26315&PermaPostID=26029

我遇到了同样的问题,尽管这篇文章中提到的解决方法对我不起作用。也许他们会为你工作。

相关问题