【问题标题】:DataGrid Selected Cell BackgroundDataGrid 选定单元格背景
【发布时间】:2012-02-21 17:18:26
【问题描述】:

我在使用 WPF DataGrid 时遇到问题。

我有以下代码..

<Style TargetType="{x:Type DataGridCell}">
       <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}" />
       <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
            <Border Name="DataGridCellBorder">
            <ContentControl Content="{TemplateBinding Content}">
             <ContentControl.ContentTemplate>
                <DataTemplate>
                   <TextBlock
                      Width="auto"
                      Height="auto"
                      Background="Transparent"
                      Text="{Binding Text}"
                      TextTrimming="CharacterEllipsis"
                      TextWrapping="WrapWithOverflow" />
                        </DataTemplate>
                     </ContentControl.ContentTemplate>
                  </ContentControl>
               </Border>
               <ControlTemplate.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Orange" />
                </Trigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
          </Setter.Value>
       </Setter>
    </Style>

如您所见,我已将默认 DataGridCell 替换为自定义模板。这是必需的,因为如果文本太大而无法放入给定的单元格,我希望单元格具有 TextTrimming(当用户将鼠标悬停在给定的单元格上时,这会在工具提示中完全显示)

我现在的问题是,当我选择一个单元格时,无论我尝试做什么,前景都设置为白色 - 我真正想要发生的是让单元格(或者更好的是,完整的行)背景颜色发生变化到奥兰治。

这方面的任何帮助都会很棒

克里斯

【问题讨论】:

  • 这方面的问题太多了,你有没有环顾四周?

标签: wpf xaml wpfdatagrid


【解决方案1】:

如果您要更改 DataGridCell.Background 属性,您需要在 ControlTemplate 的某处使用它

例如使用TemplateBinding

<Border Name="DataGridCellBorder"
        Background="{TemplateBinding Background}"/>

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2012-03-07
    • 2017-10-04
    • 2013-01-14
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多