1

以下のように app.xaml で定義されたスタイルがあります。

<Style TargetType="DataGridCell">
        <Setter Property= "BorderThickness" Value="1"/>            
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="DataGridCell">
                            <Grid Height="18">
                                <Border BorderBrush="Black" BorderThickness=".2" >
                                    <Border x:Name="border" Background="#992288ff" BorderBrush="Black" BorderThickness=".2">
                                      ......
                      ......
                  ......
                                    </Border>
                                </Border>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Trigger>
     </Style.Triggers>

私のフォームでは、1 つのセルに対して定義されたスタイルがあります。コードは以下のとおりです。

 <DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=TwoWay}" IsReadOnly="True" >
                    <DataGridTextColumn.CellStyle>
                        <Style TargetType="DataGridCell">
                            <Setter Property="Foreground">
                                <Setter.Value>
                                    <Binding Converter="{StaticResource FGColorKey}"/>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGridTextColumn.CellStyle>
                </DataGridTextColumn>

ここでは、フォアグラウンド スタイルのみを定義しています。しかし、セル テンプレートの app.xaml で定義したスタイルは、このセルには適用されません。以下に添付された画像を参照してください。

ここに画像の説明を入力

4

1 に答える 1

5

列にプロパティを設定するCellStyleと、そのスタイルがその列のすべてのセルに使用され、システムはリソースとして定義したスタイルを気にしなくなります。

両方のスタイルを適用するには、セルスタイルのスタイルをapp.xamlのリソースのスタイルに基づいて作成する必要があります。

BasedOnこれを行うには、次のようなスタイルでプロパティを設定します。

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
        <Setter Property="Foreground">
            <Setter.Value>
                <Binding Converter="{StaticResource FGColorKey}"/>
            </Setter.Value>
        </Setter>
    </Style>
</DataGridTextColumn.CellStyle>
于 2012-11-29T12:51:15.420 に答える