使用静态内容设置ListBox样式

时间:2011-04-05 16:22:47

标签: xaml windows-phone-7 listbox styling

我在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的样式,并且我知道在数据绑定时如何设置样式,但是在使用这样的静态内容时如何设置列表框项目模板的样式?

1 个答案:

答案 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>