【发布时间】:2014-01-30 18:15:56
【问题描述】:
我有一个使用 itemTemplate 的 listBox,其中包含以下行:
<Image Source="{Binding MyProperty.PossiblyNullObject.UrlProperty}"/>
绑定到此列表框的是一个模型视图集合,它在单独的线程上加载集合中项目的组件。组合引擎首次呈现 xaml 代码时,可能不会将“PossiblyNullObject”设置为值。
WPF 如何处理这个问题?它是否使用默认值(没有图像源所以没有图像)并继续?它等待吗?它是否会自动检测值何时初始化并使用新源重新呈现?如果我以编程方式调用“MyProperty.PossiblyNullObject.UrlProperty”,它如何不抛出对象空异常?当我尝试调用它时,如何在我自己的代码中重现此功能?
感谢您的任何建议。我对 WPF 来说是个令人尴尬的新手,我正试图解决我无法解决的问题。图像加载是一个性能问题,所以我找到了一个解决方案来加载、解码,然后在后台线程上冻结图像源,这样它就不会锁定 UI。不幸的是,当我尝试用调用相同属性的解决方案替换图像源绑定时遇到了这个空异常问题。 WPF 以某种方式处理可能的空对象,我想以同样的方式来保持干净。
【问题讨论】:
-
在
Binding中有属性:TargetNullValue 和FallbackValue。当源的值为 null 时,第一个返回您的值。当绑定无法返回值时,第二个返回您的值。适合你吗? -
谢谢阿纳托利。这给了我足够的时间开始研究。
-
你不介意,如果我写这个作为答案并且你接受了吗?谢谢。
-
是的,我会接受这个答案。
标签: wpf multithreading xaml properties null