【问题标题】:How to hunt down WPF binding errors?如何查找 WPF 绑定错误?
【发布时间】:2010-08-03 14:06:07
【问题描述】:

我们有一个非常大的项目。 Visual Studio 调试输出日志包含几个重复的 WPF 绑定错误。 例如:

System.Windows.Data 错误:5:BindingExpression 生成的值对目标属性无效。;值='NaN' 绑定表达式:路径=宽度; DataItem='ContentPresenter' (Name='');目标元素是'ContentPresenter'(名称='');目标属性是“MaxWidth”(类型“Double”)

执行某些操作时会打印这些行。但是,这是一个非常繁重的操作,涉及到数十个 WPF 类。

有没有快速找到绑定错误的确切来源的方法?一些可能有帮助的工具?

【问题讨论】:

    标签: c# wpf binding


    【解决方案1】:

    您看到的错误是因为一个控件的MaxWidth 被绑定到另一个控件的WidthMaxWidth 必须有一个确定的数值,但Width 可以有几个不确定的值,具体取决于所使用的布局。在这种情况下,源代码管理的宽度是NaN - 这是MaxWidth 的无效值。这就是导致错误的原因。

    所以,我会在您设置 MaxWidth="{Binding Width, ElementName=someElement}" 或类似的控件上寻找绑定。

    据推测,该绑定已经到位,因为一个控件包含在一个布局面板中,如 StackPanel,它不限制其子级的大小,并且有人试图绑定 MaxWidth 来处理剪辑问题。更好的解决方案是更改为限制其内容大小的面板控件。

    正在执行的操作可能与这种情况下的错误无关,只是它似乎使您的布局无效。

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2015-07-25
      • 2018-09-05
      相关资源
      最近更新 更多