前三行WPF ListView的风格不同

时间:2009-12-27 11:38:54

标签: wpf listview styles

我希望ListView中的前三项具有特殊风格。我怎样才能做到这一点?

我试过这个但是项目总是为空:

if (tracklistQueue.Items.Count > 0) {
    ListViewItem item = (ListViewItem)tracklistQueue.ItemContainerGenerator.ContainerFromIndex(0);
    item.Style = (Style)FindResource("StyleName");
}  

2 个答案:

答案 0 :(得分:6)

您可以使用AlternationIndex和AlternationCount属性。

以下示例为前三行设置不同的背景颜色。

将此样式定义添加到UserControl(或Window):

<Style TargetType="ListViewItem">
    <Style.Triggers>
        <Trigger Property="ItemsControl.AlternationIndex" Value="0">
            <Setter Property="Background" Value="#FFFF0000" />
        </Trigger>
        <Trigger Property="ItemsControl.AlternationIndex" Value="1">
            <Setter Property="Background" Value="#FF00FF00" />
        </Trigger>
        <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="Background" Value="#FF0000FF" />
        </Trigger>
    </Style.Triggers>
</Style>

将ListView的AlternationCount设置为大于ListView实际可以包含的行数的值:

<ListView AlternationCount="1000" />

参考:

ItemsControl.AlternationCount Property

答案 1 :(得分:0)

解决了它。 ItemContainerGenerator尚未完成生成项目。

将此添加到构造函数并将代码放在那里:

this.tracklistQueue.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);