我正在使用绑定作为Image
控件的源。
<Image Source="{Binding ImageUri}"/>
但这ImageUri
可以为空,因此我想为此使用默认图像,占位符,/Assets/PlaceHolder.png
例如可以在其中。
如何设置默认图像?谢谢。 (这是一个 WP8 应用程序,但不应与 WPF 不同)
我正在使用绑定作为Image
控件的源。
<Image Source="{Binding ImageUri}"/>
但这ImageUri
可以为空,因此我想为此使用默认图像,占位符,/Assets/PlaceHolder.png
例如可以在其中。
如何设置默认图像?谢谢。 (这是一个 WP8 应用程序,但不应与 WPF 不同)
您可以通过设置来实现TargetNullValue
<Image>
<Image.Source>
<Binding Path="ImageUri" >
<Binding.TargetNullValue>
<ImageSource>/Assets/PlaceHolder.png</ImageSource>
</Binding.TargetNullValue>
</Binding>
</Image.Source>
</Image>
实际上,您可以采取相反的方式,在我看来,这是一种更好的体验,只需在布局中使用两个Image
控件,一个使用本地占位符源,一个使用远程. 当您的远程绑定为空时,本地图像已经存在。但是,如果绑定不为空,它会在渲染后自动覆盖本地占位符图像。Grid
Binding
<Grid>
<Image Source="Assets/Placeholder.png"/>
<Image Source="{Binding ImageUri}"/>
</Grid>
您可以在图像上设置 ImageFailed 事件,
<Image Source="{Binding ImageUri}" ImageFailed="Image_ImageFailed"/>
并使用以下 C# 在其位置加载特定图像。
private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
((Image)sender).Source = new BitmapImage(new Uri("/Assets/MyDefaultImage.png", UriKind.Relative));
}
你可以试试这个:
<Image>
<Image.Source>
<Binding Path="ImageUri">
<Binding.TargetNullValue>
<BitmapImage UriSource="/ProjName;component/Assets/PlaceHolder.png" />
</Binding.TargetNullValue>
</Binding>
</Image.Source>
</Image>
您可以使用ImageFailed事件和ChangePropertyAction。
这段代码片段对我有用:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
<Image x:Name="GeologyMapsLegend" Stretch="Fill" Height="150">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ImageFailed">
<ei:ChangePropertyAction PropertyName="Source" TargetName="GeologyMapsLegend">
<ei:ChangePropertyAction.Value>
<ImageSource>
/LanSysWebGIS;component/Pictures/Icon/NoImageAvailable.jpg
</ImageSource>
</ei:ChangePropertyAction.Value>
</ei:ChangePropertyAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
使用TargetNullValue
属性。如果我不想显示任何图像,这将非常有帮助。