问候,
在创建WPF应用程序时,我显然使用了大量绑定。但是我发现通常我不使用FallbackValue属性。
我的问题是:如果它应该是:FallbackValue =“”我应该总是设置后备值事件吗?
使用/不使用FallbackValue对内存/性能/其他影响有什么影响?
答案 0 :(得分:2)
你几乎不应该使用FallbackValue。
如果你已经正确设置了所有内容,那么数据绑定应该永远不会失败,所以永远不应该看到后备值。
这里遇到的最大性能问题是数据绑定失败的成本(这些通常涉及异常并且比成功绑定要昂贵得多)。使用FallbackValue可以隐藏这些性能问题。因此,我认为使用FallbackValue通常会使性能变差(但一如既往地取决于它)
答案 1 :(得分:1)
我个人建议在不依赖负载的情况下提供FallbackValue
以提供功能,除非您某些负载永远不会失败。有多种方法可以使加载失败,如果您的图像等没有真正影响功能,那么您的用户因为公司的徽标因文件损坏而无法加载而导致程序失败是很苛刻的...
但是,如果您需要资源用于您的功能,则不应提供回退值,而应捕获异常并处理它。
FallbackValue
也可用于优先图像源。在这里,您可以在其他地方(可能通过Internet)启动资源的异步加载,并且在加载完成之前,您的回退值将可用。例如,您可以使用后备值在图像返回之前提供占位符图像。如果图像加载(离开互联网)失败,你就有了一个占位符而不是一个空格 - 由于屏幕元素大小调整问题,有时候有空格是不可接受的(当没有大小时,事情就会消失)
至于性能方面的考虑,由于回退资源,我没有感觉到性能下降太多。但是,请理解,如果资源是异步加载的,那么您实际上是在加载两个资源而不是一个 - 但回退通常是本地资源,因此对性能的影响应该是最小的。