C# 如何将绑定中的FallbackValue设置为外部映像文件的路径?
我试图设置FallbackValue,以防我的转换器无法调用,但我不知道如何做到这一点C# 如何将绑定中的FallbackValue设置为外部映像文件的路径?,c#,wpf,binding,converter,fallbackvalue,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" Marg
<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" />
对于我自己,我创建了以下示例:
<!-- xmlns:sys="clr-namespace:System;assembly=mscorlib" -->
<Window.Resources>
<!-- Test data -->
<local:TestDataForImage x:Key="MyTestData" />
<!-- Image for FallbackValue -->
<sys:String x:Key="ErrorImage">pack://application:,,,/NotFound.png</sys:String>
<!-- Image for NULL value -->
<sys:String x:Key="NullImage">pack://application:,,,/NullImage.png</sys:String>
</Window.Resources>
<!-- Grid using DataContext -->
<Grid DataContext="{StaticResource MyTestData}">
<Image Name="ImageNull" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Bottom" Source="{Binding Path=NullString, TargetNullValue={StaticResource NullImage}}" />
<Image Name="ImageNotFound" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding Path=NotFoundString, FallbackValue={StaticResource ErrorImage}}" />
</Grid>
对于图像控件,当您使用URI字符串绑定源属性时,它将自动将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}}" />
当我们将FallbackValue和TargetNullValue设置为BitmapImage的StaticResource时,
它可以工作。代替“Pictures/Unknown.png”指定完整路径是的,它只在文件存在时解决问题。如果我保留未知文件并将其包含在可执行文件中,并且我可以使用Uri(“/Pic/nam.png”)访问该文件,而不能使用FallbackValue的同一文件的相对路径访问该文件,那么有什么区别?
public class TestDataForImage : DependencyObject
{
public string NotFoundString
{
get
{
return (string)GetValue(NotFoundStringProperty);
}
set
{
SetValue(NotFoundStringProperty, value);
}
}
public static readonly DependencyProperty NotFoundStringProperty = DependencyProperty.Register("NotFoundString", typeof(string), typeof(TestDataForImage), new PropertyMetadata(""));
public string NullString
{
get
{
return (string)GetValue(NullStringProperty);
}
set
{
SetValue(NullStringProperty, value);
}
}
public static readonly DependencyProperty NullStringProperty = DependencyProperty.Register("NullString", typeof(string), typeof(TestDataForImage), new PropertyMetadata(""));
public TestDataForImage()
{
NotFoundString = "pack://application:,,,/NotExistingImage.png";
NullString = null;
}
}
<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}}" />