我使用Datagrid
。在那里我放了Area
这样的列表:
ObservableCollection<Area> areas = new ObservableCollection<Area>();
...
datagrid.ItemsSource = areas;
现在我想根据Area
的属性设置行的样式。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<!-- Compiler can't find UseForGroups -->
<Trigger Property="Area.UseForGroups" Value="True">
<Setter Property="Background" Value="LightCoral"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
如何引用Area.UseForGroups
?
我尝试了以下DataTriggers
,但没有任何反应
<DataGrid ...>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}" >
<Style.Triggers>
<DataTrigger Binding="{Binding UseForGroups}" Value="True">
<Setter Property="Background" Value="LightCoral"/>
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
答案 0 :(得分:3)
以下是使用DataTrigger
的示例<Page.Resources>
<Style x:Key="RowStyle" TargetType="{x:Type DataGridRow}" >
<Style.Triggers>
<DataTrigger Binding="{Binding UseForGroups}" Value="True">
<Setter Property="Background" Value="LightCoral"/>
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Page.Resources>
<DataGrid RowStyle="{StaticResource RowStyle}" ...>
请注意,您不应将'Area.UseForGroups'指定为'UseForGroups',因为单个行的DataContext是 Area 。
答案 1 :(得分:1)
您是否尝试使用DataTrigger
?
编辑:
常规Trigger
响应依赖项属性(通常是GUI属性)。
DataTrigger
可以响应任何.NET属性(通过设置其Binding属性)。
编辑2:
此外,我认为使用DataTrigger
您无需仅指定Area.UseForGroups
UseForGroups
,因为DataGridRow
的绑定已经是Area
类型