.net “获得许多绑定”;信息“;在WPF输出窗口中

.net “获得许多绑定”;信息“;在WPF输出窗口中,.net,wpf,binding,.net,Wpf,Binding,当我启动我的应用程序时,我会得到很多这样的信息: 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='');

当我启动我的应用程序时,我会得到很多这样的信息:

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')

我应该关心那个输出吗?

是的,你应该。像对待编译器警告和错误一样对待绑定反馈(信息、错误等)是最安全的。绑定问题往往会降低应用程序的执行速度,因为它会强制重新评估绑定,而且根据我的经验,有时会将它们破坏到需要在代码中重新创建绑定的位置


如果可以的话,最简单的解决方法是将绑定上的
FallbackValue
设置为可以视为默认值的值。例如,如果您有一个具有“Count”属性的类,但该类在创建视图时的某个时间点可以为null,那么您的绑定可能看起来像
,它将在文本块中显示一个“0”,如果有一个正在使用的话,将后退值传递给转换器。

< P>我同意雨果的观点,如果我们能考虑绑定所给出的所有反馈,那就太好了。但就我个人而言,我不认为信息类型的跟踪消息是有害的。您肯定需要解决标记为错误和警告的绑定问题

我得到了这样有约束力的信息-

System.Windows.Data信息:20:BindingExpression由于缺少信息而无法检索值。 BindingExpression:Path=PlacementTarget.DataContext.RemoveCommand; DataItem='ContextMenu'(名称='');目标元素是“MenuItem” (名称=“”);目标属性为“Command”(类型为“ICommand”)

现在,在上下文菜单中有必要使用
PlacementTarget
,除非您打开上下文菜单,否则此绑定将无法工作

我试图找到一些可靠的消息来源,其中提到了这些信息消息的确切影响,但没有找到任何消息来源。 Hugo提供的链接还提到了错误类型输出-

修复绑定表达式路径错误

如果在调试WPF应用程序时,您在输出中看到错误 窗口式:

System.Windows.Data错误:40:BindingExpression路径错误: 在“对象”“数据源”上找不到“AcquireFocus”属性 (HashCode=61327894)”。BindingExpression:Path=AcquireFocus; DataItem='DataSource'(HashCode=61327894);目标元素是 “VsButton”(名称=“”);目标属性为“AcquireFocus”(类型 '布尔')*

然后,除了断开的数据绑定之外,您可能还有一个 性能问题。WPF尝试了几种不同的方法来解析路径 错误,包括搜索附加属性,这是非常复杂的 昂贵的。消除所有这些警告,你应该表现得很好。视觉的 Studio 2010提供了调试WPF数据绑定的新选项


这对我来说似乎很愚蠢,甚至几乎像是在数据库设计中确定某种引用完整性。我的绑定总是获取数据,否则它们不会显示任何内容,那么问题出在哪里?我没有CurrentCustomer的默认值。名称为什么应该有默认值?“Jon doe”没有意义。。。那么为什么我的装订要退后呢?要么有数据,要么没有。。。那就什么也看不出来了。我有大约50个属性显示信息“错误”,现在我用我的幻想和一些疯狂的东西来命名它?LOL和this=>BindingExpression:Path=ValidationErrorTemplate;回退???没有任何东西可以阻止空白值成为回退值。在您的示例中,使用空字符串作为回退值是有意义的,而不是使用虚构的值。好的,Hugo,但是我从哪里知道使用什么作为回退值?不知道这会让我的束缚更糟。。。我甚至可以绑定我从未听说过的属性的信息,这会使我的整个visual studio解决方案中根本不使用这些属性的速度变慢…:BindingExpression:Path=CellsPanelHorizontalOffset;BindingExpression:Path=HeadersVisibility;作为原始答案的后续,我终于找到了(在搜索其他性能问题时,没有不断地重复这个问题!lol)我获得的原始信息的参考资料,这是Visual Studio团队博客,特别是一篇关于性能调整的文章。