我在ListBox
控件中有一组我想要的静态内容。
<ListBox>
<ListBox.Items>
<ListBoxItem>
<Image />
<TextBlock Text="One" />
</ListBoxItem>
<ListBoxItem>
<Image />
<TextBlock Text="Two" />
</ListBoxItem>
<ListBoxItem>
<Image />
<TextBlock Text="Three" />
</ListBoxItem>
</ListBox.Items>
</ListBox>
我该如何设计造型呢?我知道我可以单独设置每个ListBoxItem
的样式,并且我知道在数据绑定时如何设置样式,但是在使用这样的静态内容时如何设置列表框项目模板的样式?
答案 0 :(得分:2)
您可以将项目定义为低级别对象并使用数据模板,这可能与样式不同,但属性也只设置一次:
<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
,它将自动应用。
您甚至可以使用Resources嵌套此自动应用程序,例如:
<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>