【问题标题】:Styling columns based on DataGridTemplateColumn in a WPF DataGrid基于 WPF DataGrid 中的 DataGridTemplateColumn 设置列的样式
【发布时间】:2011-02-12 03:37:43
【问题描述】:

我正在使用 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>

谢谢。

【问题讨论】:

    标签: wpf datagridtemplatecolumn


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 2011-03-12
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多