我的application.xaml中有以下静态资源:
<Style x:Key="SummaryCell" TargetType="DataGridCell">
<Setter Property="Background" Value="LightSteelBlue" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
如果IsSummary
为真,我想将它应用于数据网格中的每个单元格。我(天真地)尝试了以下方法:
<DataGrid>
<DataGrid.CellStyle>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummary}" Value="True">
<Setter Property="Style" Value="{StaticResource SummaryCell}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
我在运行时遇到以下错误:
不允许样式对象影响它所适用的对象的Style属性。
这是有道理的,因为数据触发器正在设置单元格的样式,这显然也是Datagrid.CellStyle
属性正在做的事情。
如何在触发器中重用静态资源,或者我可以使用其他方法来执行此操作?
答案 0 :(得分:1)
错误在这里非常有意义。不过,我可以建议一个解决方法是 将ContentGtrol中的DataGrid包装起来并在其ControlTemplate上应用触发器 。
<ContentControl>
<ContentControl.Template>
<ControlTemplate>
<DataGrid x:Name="dataGrid"/>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsSummary}" Value="True">
<Setter TargetName="dataGrid" Property="DataGrid.CellStyle"
Value="{StaticResource SummaryCell}" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>