当我启动我的应用程序时,我收到了很多这样的信息:
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and
no valid fallback value exists; using default instead.
BindingExpression:Path=Period; DataItem=null; target element is 'TextBlock' (Name='');
target property is 'Text' (type 'String')
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and
no valid fallback value exists; using default instead.
BindingExpression:Path=DocumentId; DataItem=null; target element is 'TextBlock' (Name='');
target property is 'Text' (type 'String')
我应该关心那个输出吗?
答案 0 :(得分:4)
是的,你应该。像编译器警告和错误一样处理绑定反馈(信息,错误等)是最安全的。绑定问题往往会降低应用程序的执行速度,因为它会强制重新评估绑定,根据我的经验,有时会将它们分解到需要在代码中重新创建绑定的位置。
如果可以,最简单的解决方法是将绑定上的FallbackValue
设置为可以视为默认值的值。例如,如果您有一个具有“Count”属性的类,但是在创建视图的某个时间点所述类可以为null,则绑定可能看起来像<TextBlock Text={Binding Count, FallbackValue=0} />
,它将显示“0”在文本块中,或者如果有一个正在使用,则将后备值传递给转换器。
答案 1 :(得分:1)
我同意Hugo的观点,如果我们能够考虑绑定给出的所有反馈,那就太好了;但我个人认为信息类型跟踪消息不是那么有害。您肯定需要解决标记为错误和警告的绑定问题。
我收到了这样的绑定信息 -
System.Windows.Data信息:20:由于缺少信息,BindingExpression无法检索值。 BindingExpression:路径= PlacementTarget.DataContext.RemoveCommand; DataItem ='ContextMenu'(Name ='');目标元素是'MenuItem' (名称= ''); target属性是'Command'(类型'ICommand')
现在,在上下文菜单中使用PlacementTarget
是必要的,除非你打开上下文菜单,否则这个绑定将不起作用;
我试图找出一些可靠的消息来源,提到这些信息消息的确切影响,但没有发现任何消息。 Hugo提供的链接还提到了错误类型输出 -
修复BindingExpression路径错误
如果在调试WPF应用程序时,您会在输出中看到错误 窗口像:
System.Windows.Data错误:40:BindingExpression路径错误: 'object'''DataSource'上找不到'AcquireFocus'属性 (的HashCode = 61327894)”。 BindingExpression:路径= AcquireFocus; DataItem ='DataSource'(HashCode = 61327894);目标元素是 'VsButton'(姓名=''); target属性是'AcquireFocus'(类型 '布尔')*
然后,以及破坏的数据绑定,你可能有一个 性能问题。 WPF尝试了几种不同的方法来解析路径 错误,包括搜索附加属性,这是相当的 昂贵。消除所有这些警告,你应该是好的。视觉 Studio 2010提供了用于调试WPF数据绑定的新选项。