今天,我测试了一个工作良好的UserControl。一时兴起,我将“数据绑定”的输出窗口WPF跟踪设置从“警告”更改为“全部”,并再次进行测试,以查看所缺少的内容。
正如您可能预期的那样,我的输出窗口确实开始填充大量的消息。例如
System.Windows.Data信息: 10 :无法使用绑定检索值,并且不存在有效的回退值;使用默认值代替。BindingExpression:Path=Image;DataItem=null;目标元素是‘ImageSource’(名称=‘CurrentImage’);目标属性是'Source‘(键入'ImageSource')
别小题大作。我知道这个装订很管用。我的图像显示得很好,但这是相关的XAML
<!--Image is drawn first, underneath everything else.
<Image x:Name="CurrentImage"
Canvas.Left="0" Canvas.Top="0"
Source="{Binding Image}"
Loaded="CurrentImage_OnLoaded"
/>为了满足我的好奇心,我决定尝试用一个后备值来消除这个消息,看看是否有任何效果。我当然能够使用x:Null (我想我也可以使用静态资源imagesource.)
<Image x:Name="CurrentImage"
Canvas.Left="0" Canvas.Top="0"
Source="{Binding Image, FallbackValue={x:Null}}"
Loaded="CurrentImage_OnLoaded"
/> 信息消失了,控制起作用了.和以前一样。
(这可能是一个很糟糕的例子,因为它不是“警告”,但我偶尔也会有“警告”甚至“错误”级别的消息出现在其他部分,这些消息同样总是正常工作的。)
所以我想知道:用默认值消除这些消息有什么真正的价值吗?如果我经常这样做,WPF会更快或者更好吗?
或者是否有某种消息级别的(警告、错误、关键信息),在此我应该将其作为我的任务,并在此之后我应该忽略这些?
还是我应该回到真正的问题上,逐个案例来看待这些问题?
发布于 2019-02-12 13:14:31
用默认值消除这些消息有什么真正的价值吗?
不是的。
如果我经常这样做,WPF会更快或者更好吗?
您应该消除代码/标记中的任何实际绑定错误,让框架来处理其余的问题。该框架确实会产生一些无害的绑定错误,除了ignoring or supress them,您无法对这些错误做太多的工作。
还是我应该回到真正的问题上,逐个案例来看待这些问题?
是。没有理由专注于解决那些你一开始就不负责的非问题。
https://stackoverflow.com/questions/54635487
复制相似问题