UWP 奇偶元素ListBoxItem的不同样式

UWP Different styles for odd and even elements ListBoxItem

我需要为奇数元素和偶数元素 ListBoxItem 使用不同的背景。我找到了应该可以解决我的问题的代码,但它不想在 UWP 中工作:

<Trigger Property="ItemsControl.AlternationIndex" Value="1">
    <Setter Property="Background" Value="Orange"/>
</Trigger>

是否有任何与 属性 ItemsControl.AlternationIndex 类似的东西,或者我如何在 VisualState 中指定偶数和奇数元素的样式?

预先感谢您的回复。

目前在UWP中,ListBox没有提供相关的属性设置替代行的背景。

我们可以创建一个 CustomListBox 作为 ListBox 的派生 class 来实现我们的需求。

public class CustomListBox : ListBox
{
    public Brush AlternativeBackground
    {
        get { return (Brush)GetValue(AlternativeBackgroundProperty); }
        set { SetValue(AlternativeBackgroundProperty, value); }
    }

    public static readonly DependencyProperty AlternativeBackgroundProperty =
        DependencyProperty.Register("AlternativeBackground", typeof(Brush), typeof(CustomListBox), new PropertyMetadata(null));


    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        base.PrepareContainerForItemOverride(element, item);
        var listBoxItem = element as ListBoxItem;
        if (listBoxItem != null)
        {
            var index = IndexFromContainer(element);

            if ((index + 1) % 2 != 1)
            {
                listBoxItem.Background = AlternativeBackground;
            }
        }
    }
}

用法

<local:CustomListBox AlternativeBackground="Orange">
    <ListBoxItem>Item 1</ListBoxItem>
    <ListBoxItem>Item 2</ListBoxItem>
    <ListBoxItem>Item 3</ListBoxItem>
    <ListBoxItem>Item 4</ListBoxItem>
</local:CustomListBox>

您可以使用 Microsoft.Toolkit.Uwp.UI.Extensions,它可以帮助您设置 AlternateColorAlternateItemTemplate。 更多信息,您可以下载Windows Community Toolkit.