2010-10-07 2 views
1

Я показываю изображения внутри списка. Связывание источника управления изображением с помощью объекта через datacontext списка.WPF - управление изображениями внутри списка

Проблема: Я хочу показать изображение без изображения (изображение), если у url нет изображения. Возможно ли это сделать в коде 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

Вы хотите отобразить * текст * 'Нет изображения', или просто хотите, чтобы у вас не было изображения? – slugster

+0

«Нет изображения» - это текст на картинке. Я хочу отобразить это изображение, если нет изображения для элемента. – Geeth

ответ

3

Проще всего создать новое значение конвертер, который пропускается в Ури и дает обратно BitmapImage ... Он может потом решил, если Ури доступен или нет ... если он доступен, просто загрузите 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 к изображению ... если это пустой или пустой, изображение по умолчанию показал, иначе он просто загружает изображение!

+0

Спасибо за ваш ответ. Можете ли вы дать образец для этого. Мне будет более полезно продолжать. – Geeth

+0

Статья обновлена ​​ – rudigrobler

+0

+1 Либо вы можете использовать DataTrigger. –

Смежные вопросы