2010-08-03 105 views
6

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

System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='NaN' BindingExpression:Path=Width; DataItem='ContentPresenter' (Name=''); target element is 'ContentPresenter' (Name=''); target property is 'MaxWidth' (type 'Double')

当执行一些动作的行被打印。但是,这是一个非常繁重的操作,涉及数十个WPF类。

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

回答

5

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

所以,我会寻找一个绑定在一个控制你设置MaxWidth="{Binding Width, ElementName=someElement}",或类似的。

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

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