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,它可以帮助您设置 AlternateColor
和 AlternateItemTemplate
。
更多信息,您可以下载Windows Community Toolkit.
我需要为奇数元素和偶数元素 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,它可以帮助您设置 AlternateColor
和 AlternateItemTemplate
。
更多信息,您可以下载Windows Community Toolkit.