Wpf 如何基于父对象的AlternateIndex设置子对象的样式?
我用的是HeaderedItemControl。每个项目是一个3列网格,每列中有边框和文本块。我想在每个项目的边框背景色交替。(基本交替行背景效果。)我尝试在UserControl级别为网格创建一个样式,根据包含控件的AlternationalIndex将背景颜色应用于其中的所有边框:Wpf 如何基于父对象的AlternateIndex设置子对象的样式?,wpf,xaml,wpf-style,Wpf,Xaml,Wpf Style,我用的是HeaderedItemControl。每个项目是一个3列网格,每列中有边框和文本块。我想在每个项目的边框背景色交替。(基本交替行背景效果。)我尝试在UserControl级别为网格创建一个样式,根据包含控件的AlternationalIndex将背景颜色应用于其中的所有边框: <Style TargetType="Grid" x:Key="myItemsGrid"> <Style.Resources> <Style TargetType="Bo
<Style TargetType="Grid" x:Key="myItemsGrid">
<Style.Resources>
<Style TargetType="Border">
<Setter Property="Background" Value="Azure" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=AlternationIndex, RelativeSource={RelativeSource AncestorType=ItemsControl}}" Value="2">
<Setter Property="Background" Value="{StaticResource color_LogoLight}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
Setter位正在工作,因为边框都是“Azure”。但是如何正确地引用AlternationIndex,以便每隔一行的边框背景颜色都会改变。我试图将相对资源指向HeaderedItemsControl和ItemsControl,但两者似乎都不是合适的目标。我已经浏览了实时视觉树,但在那里我找不到任何参考
非常感谢您的帮助。您必须在ItemsControl项上查找替代索引,而不是ItemsControl本身!但您必须在绑定中搜索哪种类型?例如,在ListBox中它是一个ListBoxItem,而在ItemsControl中它是一个ContentPresenter
不要忘记路径=(ItemsControl.alternationadex),对于您的情况(alternationadex==2),您必须将ItemsControl中的alternationationcount至少设置为3!因此,该代码应该可以工作:
<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ContentPresenter}}" Value="2">
<Setter Property="Background" Value="{StaticResource color_LogoLight}" />
</DataTrigger>
您必须在ItemsControl的项上查找替代索引,而不是在ItemsControl本身上!但您必须在绑定中搜索哪种类型?例如,在ListBox中它是一个ListBoxItem,而在ItemsControl中它是一个ContentPresenter
不要忘记路径=(ItemsControl.alternationadex),对于您的情况(alternationadex==2),您必须将ItemsControl中的alternationationcount至少设置为3!因此,该代码应该可以工作:
<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ContentPresenter}}" Value="2">
<Setter Property="Background" Value="{StaticResource color_LogoLight}" />
</DataTrigger>
有两件事。。。ContentPresenter有点让我错过了。我理解这个概念,但在本例中,我无法辨别是什么充当了“ListBoxItem”。而且,出于某种原因,括号会起作用,因为没有括号就不起作用。非常有用。谢谢你的回复。有两件事。。。ContentPresenter有点让我错过了。我理解这个概念,但在本例中,我无法辨别是什么充当了“ListBoxItem”。而且,出于某种原因,括号会起作用,因为没有括号就不起作用。非常有用。谢谢你的回复。