使 WPF 触发器使用任何属性
本文关键字:属性 任何 触发器 WPF | 更新日期: 2023-09-27 18:30:31
我使用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>
下面是
使用 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",因为单个行的 DataContext 是一个 Area。
你试过用DataTrigger
吗?
编辑:
常规Trigger
响应依赖项属性(通常是 GUI 属性)。
DataTrigger
可以响应任何 .NET 属性(通过设置其绑定属性)。
编辑2:
另外,我认为使用DataTrigger
您不需要指定Area.UseForGroups
仅UseForGroups
因为您的绑定DataGridRow
已经是类型 Area