代码之家  ›  专栏  ›  技术社区  ›  Naresh

在WPF DataGrid中基于DataGridTemplateColumn设置列样式

  •  3
  • Naresh  · 技术社区  · 16 年前

    <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>
    

    谢谢。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Daniel Rose    16 年前

    至少在WPF4中,DataGridTemplateColumns有一个CellStyle: http://msdn.microsoft.com/en-us/library/cc189163.aspx