3

行が編集可能な場合、列の1つに「編集」ハイパーリンクを表示する必要があるWPF DataGridを使用しています-これは、行のバッキングモデルのブールフラグによって示されます。DataGridTemplateColumn を使用してこれを達成できました - 問題ありません。ただし、行全体に対する追加の要件は、行が選択されたときにハイライトを表示しないことです (これはデフォルトで青色の背景です)。透明な背景を持つ DataGridCell スタイルを定義することで、他の列でこれを実現できました。

<DataGridTextColumn
    Header="Id"
    Binding="{Binding Path=Id}"
    HeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
    CellStyle="{StaticResource DataGridCellStyle}" />

ここで、DataGridCellStyle は次のように定義されます。

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="Background" Value="Transparent" />
    ...
</Style>

ただし、問題の列である DataGridTemplateColumn には、選択のハイライトをオフにするために使用できる「CellStyle」属性がありません。だから私の質問は、DataGridTemplateColumn を使用するときにセル スタイルを設定する方法ですか? 最初の要件を満たす列の実装を次に示します (つまり、行が編集可能な場合は「編集」ハイパーリンクを表示します)。

<DataGridTemplateColumn
    Header="Actions"
    HeaderStyle="{StaticResource CenterAlignedColumnHeaderStyle}">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock
                Visibility="{Binding Path=Editable, Converter={StaticResource convVisibility}}"
                Style="{StaticResource CenterAlignedElementStyle}">
                    <Hyperlink
                        Command="..."
                        CommandParameter="{Binding}">
                        <TextBlock Text="Edit" />
                    </Hyperlink>
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

ありがとう。

4

1 に答える 1

4

少なくとも WPF4 では、DataGridTemplateColumns の CellStyle があります: http://msdn.microsoft.com/en-us/library/cc189163.aspx

于 2010-04-25T18:16:14.243 に答える