如果绑定属性无法提供值,请更正行为

时间:2019-03-20 08:26:07

标签: c# wpf

我有一个ListBox,其中包含大量的预览图像。当用户在图像上滚动时,图像是从Internet下载并本地缓存的。因此,使用AsyncPreview_120绑定来下载图像并返回缓存文件的路径。如果失败,则使用自定义转换器根据文件名生成后备图像。

<Image.Source>
  <PriorityBinding FallbackValue="{StaticResource DefaultImage}">
    <Binding Path="AsyncPreview_120" IsAsync="True" />
    <Binding Path="FileName" Converter="{StaticResource nameToImageSourceConverter}" IsAsync="True" />
  </PriorityBinding>
</Image.Source>

在某些情况下,可能会发生预览下载失败的情况,例如由于没有互联网连接。当这按预期工作时,我的问题是绑定可以返回或抛出什么,这样我就不会从wpf得到警告或错误。

我尝试过:

  • 返回null
  • 返回空字符串
  • 投掷NotSupportedException
  • 返回DependencyProperty.UnsetValue

,但是全部导致错误或警告。绑定还有其他方式可以起作用,以便WPF将其视为某种“合法”情况并默默地继续前进吗?还是我可以使用更好的方法?

1 个答案:

答案 0 :(得分:2)

使用Binding.DoNothing Binding.DoNothing

  

绑定源属性或转换器可以返回Binding.DoNothing   指示绑定引擎不执行任何操作。例如,   指示绑定引擎不要将值传输到绑定   目标,不移动到PriorityBinding中的下一个Binding,或者不   使用FallBackValue或默认值。