2

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が true の場合、データ グリッドの各セルに適用します。私は(素朴に)次のことを試しました:

<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 オブジェクトは、それが適用されるオブジェクトの Style プロパティに影響を与えることはできません。

データトリガーがセルのスタイルを設定しているため、これは理にかなっています。これは明らかにDatagrid.CellStyleプロパティが行っていることでもあります。

トリガー内で静的リソースを再利用するにはどうすればよいですか? または、これを行うために他にどのような方法を使用できますか?

4

1 に答える 1

1

エラーはここで完全に理にかなっています。ただし、ここでの回避策は、 DataGrid を ContentControl でラップし、その 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>
于 2014-07-06T14:15:59.107 に答える