Вы можете связать Image.Source
с Tag
Property
(или Присоединенное свойство ) ListView
, чтобы установить его индивидуально.
Для привязки к Tag
Property
в вашем ItemContainerTemplate
измените Source на этот
<Setter Property="Image.Source" Value="{Binding Path=Tag, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"/>
И теперь Image.Source
можно установить снаружи '
<ListView ItemTemplate="{DynamicResource MyContainerTemplate}" Tag="{StaticResource Article}"/>
Редактировать
Немного менее хакерским способом было бы использовать пользовательский Listview
с Property
только для установки значения по умолчанию Image
источник.
Пользовательский ListView
может выглядеть следующим образом и помещается в Your.Namespace
.
public class ListViewWithDefaultImage : ListView
{
public ListViewWithDefaultImage() : base() { }
public string DefaultImageSource
{
get { return (string)this.GetValue(DefaultImageSourceProperty); }
set { this.SetValue(DefaultImageSourceProperty, value); }
}
public static readonly DependencyProperty DefaultImageSourceProperty = DependencyProperty.Register("DefaultImageSource", typeof(string), typeof(ListViewWithDefaultImage), new PropertyMetadata(String.Empty));
//Note: its possible to replace String.Empty with a default Path for Default Images
}
Кроме того, стиль должен привязываться к DefaultImageSource Property
.
<Setter Property="Image.Source" Value="{Binding Path=DefaultImageSource, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" />
Теперь его можно использовать вот так
xmlns:cc="clr-namespace:Your.Namespace"
.
.
<cc:ListViewWithDefaultImage ItemsSource="{Binding Samples}" ItemTemplate="{DynamicResource MyContainerTemplate}" DefaultImageSource="{StaticResource Article}"/>