我一直在阅读WPF Unleashed,有些东西让我对样式感到困惑。
<Style TargetType="{x:Type Control}" x:Key="altStyle">
<Setter Property="Background" Value="Green"></Setter>
<Setter Property="Foreground" Value="White" ></Setter>
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="White"></Setter>
<Setter Property="Foreground" Value="Black" ></Setter>
</Trigger>
</Style.Triggers>
</Style>
所以我在这里有一个样式,可以应用于任何源自控制的东西。假设TargetType的工作方式。对我来说,令人困惑的部分是它如何理解ItemsControl.AlternationIndex
是什么。我正在为控件定义一个样式,它在继承链上比ItemsControl更高。它似乎违反了继承规则。
然后我有一个简单的数据网格,它使用这个样式作为ItemsContainerStyle:
<local:MyGrid AlternationCount="2" ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DataContext.Source}" Grid.Row="3" ItemContainerStyle="{StaticResource altStyle}"></local:MyGrid>
(MyGrid派生自DataGrid)
我在这里假设样式应用于网格中的每个DataRow,但是如何能够解析这个ItemsControl.AlternationIndex
,因为这当然不适用于DataRow呢?并且只是为了清楚它的外观:
所以问题是。应用于数据网格行的样式如何管理以解析名为ItemsControl.AlternationIndex