我在列表框中显示图像。使用对象通过列表框的datacontext绑定图像控件的源。
问题:如果网址没有图片,我想显示无图像(图像)。是否可以在xaml代码中执行此操作。
代码:
<ListBox ClipToBounds="False" x:Name="lbBestSellerImage" Width="Auto"
ItemsSource="{Binding}" ItemsPanel="{DynamicResource iptListBox}"
ItemContainerStyle="{DynamicResource ListBoxItemStyle}" />
<Style x:Key="ListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Padding" Value="2,0,0,0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid Width="150">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Image HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="0" x:Name="img" Source="{Binding ImageUrl}" Height="74" Stretch="Fill" Width="75"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:3)
最简单的方法是创建一个在uri中传递的新值转换器,并返回一个BitmapImage ...然后可以判断uri是否可用...如果可用,只需将uri加载到一个BitmapImage,否则加载一个默认的BitmapImage!
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string uri = (string)value;
if (string.IsNullOrEmpty(uri))
return new BitmapImage(new Uri(uriToMyDefaultImage));
return new BitmapImage(new Uri(uri));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
以下值转换器需要一个表示图像的uri的字符串...如果它为null或为空,则显示默认图像,否则它只是加载图像!