如何寻找WPF绑定错误?

Ela*_*lad 6 c# wpf binding

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

System.Windows.Data错误:5:BindingExpression生成的值对目标属性无效.Value ='NaN'BindingExpression:Path = Width; DataItem ='ContentPresenter'(Name =''); target元素是'ContentPresenter'(Name =''); target属性是'MaxWidth'(类型'Double')

执行某些操作时会打印这些行.然而,这是一个非常繁重的操作,其中涉及数十个WPF类.

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

Dan*_*zey 5

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

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

猜测,该绑定已经到位,因为控件包含在布局面板中,就像StackPanel不限制其子节点的大小一样,并且有人试图绑定MaxWidth以处理剪切问题.更好的解决方案是更改为限制其内容大小的面板控件.

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