Вы можете определить элементы как низкоуровневые объекты и использовать шаблоны данных, которые могут не совпадать со стилями, но свойства также устанавливаются только один раз:
<ListBox xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ListBox.Items>
<sys:String>one</sys:String>
<sys:String>two</sys:String>
<sys:String>three</sys:String>
</ListBox.Items>
<ListBox.ItemTemplate>
<DataTemplate>
<!-- "Style" this at will -->
<StackPanel>
<Image />
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
( Комустиль обтекания ListBoxItems, который вы можете попробовать использовать неявный стиль, определенный в ListBox.Resources
)
Следующее работает только в WPF
Добавитьстиль для ресурсов ListBox и установите только TargetType
, а не x:Key
, он будет применен автоматически.
Вы можете даже вложить это автоматическое приложение, используя ресурсы, например:
<ListBox>
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<Style TargetType="{x:Type Image}">
<Setter Property="Width" Value="100"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue"/>
</Style>
</Style.Resources>
</Style>
</ListBox.Resources>
<!-- Items here -->
</ListBox>