(1)FallbackValue
FallbackValue针对无法绑定(给定的Path不存在)时使用的默认值,默认情况下为UnsetValue.
若绑定源的路径解析成功,且值转换器能够正确转为结果值,且该值对绑定目标属性有效,则会正常绑定数据,不会使用FallbackValue的值。如果不能正常绑定,则会使用FallbackValue值。常见的使用状况为:当绑定对象不存在时,什么都不要显示,存在时,根据给定的bool值判断是否显示。比如以下代码:
<Grid Visibility="{Binding IsOnUploadingBigFile,FallbackValue=2,Converter={StaticResource BoolToVisibilityConverter}}">......</Grid>
在代码中,绑定到IsOnUploadingBigFile,如果正常上传大文件,则显示,否则不显示。看似正常,但是如果IsOnUploadingBigFile属性所在的对象都没有,则系统根据找不到绑定的数据源,如果不写FallbackValue,则系统会使用默认的UnsetValue,这是Grid控件会根据默认的Visibility值即Visible来显示Grid出来。如果这种情况下不要显示的话,则明确的写出来FallbackValue,目前写的是2,即Visibility.Collapsed的值。这样就不会显示了。不要直接写FallbackValue=Visibility.Collapsed,那样系统识别不了。
(2)TargetNullValue
当源的值为Null时目标中使用的值。和FallbackValue比较接近