C# 自定义StackPanel以使用子控件替换颜色

C# 自定义StackPanel以使用子控件替换颜色,c#,.net,wpf,C#,.net,Wpf,我有一个动态隐藏/显示项目的StackPanel,我想让它使每个项目的背景属性交替(白色和灰色)。我试着用编程的方式来做,但是效率很低,因为每次隐藏/显示一个项目时,设置每个项目背景的代码都会运行。我知道也许使用样式/模板可以解决这个问题,但由于某种原因,每次我尝试学习WPF的这个特殊特性时,我都会感到困惑。有人能告诉我怎么做吗 另外,我曾考虑过使用ListBox/ListView而不是StackPanel,但请相信我,由于我的特殊实现,它们不能很好地工作。您可以使用附加属性ItemsContr

我有一个动态隐藏/显示项目的StackPanel,我想让它使每个项目的背景属性交替(白色和灰色)。我试着用编程的方式来做,但是效率很低,因为每次隐藏/显示一个项目时,设置每个项目背景的代码都会运行。我知道也许使用样式/模板可以解决这个问题,但由于某种原因,每次我尝试学习WPF的这个特殊特性时,我都会感到困惑。有人能告诉我怎么做吗


另外,我曾考虑过使用ListBox/ListView而不是StackPanel,但请相信我,由于我的特殊实现,它们不能很好地工作。

您可以使用附加属性ItemsControl.AlternationaIndex(示例-)上的触发器对任何ItemsControl执行此操作,但我认为仅在xaml中使用StackPanel是不可能的。你确定我做得很慢吗?我确信它的运行速度足够快,所以你不必费心。

我本来打算推荐同样的东西,但尼古拉抢先了我一步。它很慢,只是因为在一个可能有数千个项目的列表上,动作太频繁了。谢谢你的回答。