对于我的DataGrid
,我创建了一个DataTemplate
:
<DataTemplate x:Key="MyDataTemplate">
<Label>Test</Label>
</DataTemplate>
此DataTemplate
将用于DataGridTemplateColumn
。 DataGrid
具有AlternationCount = 2
属性。
我想检查AlternationCount
中的当前DataTemplate
,根据AlternationCount
设置内容。我怎么能要求AlternationCount
?
更新1:
我用以下代码尝试了Sheridan的建议:
<Style x:Key="MyStyle" TargetType="Label">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="Red" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
在我的DataTemplate
中使用此样式,如下所示:
<DataTemplate x:Key="MyDataTemplate">
<Label x:Name="MyLabel" Style={StaticResource MyStyle}">Test</Label>
</DataTemplate>
但遗憾的是,只有红色背景出现。在我看来,AlternationIndex
始终为0.我在这里缺少什么?
答案 0 :(得分:0)
可以访问AlternationCount
attached property,但我认为您确实需要AlternationIndex
attached property。基本上,您可以在Trigger
中访问XAML中此附加属性的值,如下所示:
<Style>
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Foreground" Value="Green" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
更新&gt;&gt;&gt;
TargetType
的{{1}}不应设置为Style
。它应该设置为数据的容器,例如。一个ComboBoxItem,ListBoxItem等。在您的情况下,您应该将Label
设置为Style TargetType
:
DataGridRow
如果您设置<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="Green" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
的{{1}}值,请假设您将其称为x:Key
,然后您可以将Style
设置为RowStyle
1}}属性值:
Style
如果您没有设置DataGrid.RowStyle
的{{1}}值,并且它在<DataGrid RowStyle="{StaticResource RowStyle}" ... />
的范围内,则会隐式应用它。