如何将绑定中的FallbackValue设置为外部图像文件的路径?

h__*_*h__ 9 c# wpf binding converter fallbackvalue

我正在尝试设置FallbackValue以防万一我的转换器无法调用,但我不知道该怎么做.

<Image Source="{Binding FallbackValue="Pictures/Unknown.png", Path=LatestPosition.DeviceFamily, Converter={x:Static conv:ConverterSet.DeviceTypeToImageSourceconverter}}" Name="image1" Stretch="Fill" Margin="5,8" Width="150" Height="150" Grid.RowSpan="4" />
Run Code Online (Sandbox Code Playgroud)

转换器中外部图像的路径看起来像那样,当LatestPosition!= null时,图像以适当的方式设置.

private static readonly ImageSource Dev1 = new BitmapImage(new Uri("/Pictures/dev1.png", UriKind.Relative));
private static readonly ImageSource Dev2 = new BitmapImage(new Uri("/Pictures/dev2.png", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)

小智 28

对于Image控件,当您使用URI字符串绑定Source属性时,它会自动将URI转换为BitmapImage.但是如果将FallbackValue和TargetNullValue设置为URI字符串,则不会显示.

您需要将其设置为BitmapImage:

<Window.Resources>
    <BitmapImage x:Key="DefaultImage" UriSource="/Resources;component/Images/Default.jpg" />
</Window.Resources>

<Image Width="128"
               Height="128"
               HorizontalAlignment="Left"
               VerticalAlignment="Top"
               Source="{Binding Photo,FallbackValue={StaticResource DefaultImage},
                                TargetNullValue={StaticResource DefaultImage}}" />
Run Code Online (Sandbox Code Playgroud)

当我们将FallbackValue和TargetNullValue设置为BitmapImage的StaticResource时,它可以工作.