【问题标题】:Locating binding errors定位绑定错误
【发布时间】:2011-02-06 06:37:56
【问题描述】:

我正在处理一个输出大量绑定错误的大型 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; 但额外的信息无助于定位有问题的绑定。文件名和行号是我真正需要的。有没有办法得到这些信息?我能想到的唯一其他解决方案是为候选者分配名称,然后从那里缩小范围。在这种情况下,有没有办法为整个解决方案中的所有可命名元素自动分配一个唯一的 x:Name?

【问题讨论】:

    标签: wpf visual-studio data-binding binding


    【解决方案1】:

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

    我还设计了我的应用程序,以通过确保绑定在源存在时始终有效来最大限度地减少“误报”的数量。

    【讨论】:

    • 感谢您的建议,但我已经尝试过了,堆栈跟踪几乎是空的:> BindingListener.WriteLine(string message) 第 78 行 C# > [外部代码]
    • 啊哈!我看到了你的问题。您的大部分堆栈跟踪都是隐藏的,因为您的 Visual Studio 安装设置为隐藏堆栈跟踪中的外部代码。这确实会妨碍您的调试,因为您无法看到完整的堆栈跟踪或探索您自己的代码之外的参数和局部变量。我相信解决此问题的过程是在“工具”>“选项”下的“调试”选项卡中关闭“仅启用我的代码”,然后右键单击堆栈跟踪并选择“显示外部代码”。
    • 哇,如果你知道怎么做,那是多么容易。这对我有很大帮助。我应该只查看灰色的堆栈跟踪项。
    【解决方案2】:

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

    在这些情况下,我发现这些错误通常是“误报”,因为它们是在绑定到的对象初始化之前抛出的。当然,这很烦人,但如果您的应用程序中的所有内容似乎都正确绑定(例如,在这里,您的菜单似乎具有正确的 Horizo​​ntalContentAlignment),那么我不会太担心

    【讨论】:

    • 我看到很多绑定错误。尽管有些可能是“误报”,但大多数都不是(从我已经做出的修复来看)。所以,我仍在寻找我原来问题的答案。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 2016-10-28
      • 2018-10-17
      • 2016-01-18
      • 1970-01-01
      • 2012-07-06
      • 2016-03-21
      • 1970-01-01
      相关资源
      最近更新 更多