Фон выбранной ячейки DataGrid - PullRequest
1 голос
/ 21 февраля 2012

У меня проблемы с 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, если текст был слишком большим, чтобы поместиться в данную ячейку (это полностью показано во всплывающей подсказке, когда пользователь наводит курсор на указанную ячейку)

Моя проблема сейчасзаключается в том, что когда я выбираю ячейку, передний план get устанавливается на White независимо от того, что я пытаюсь сделать - я действительно хочу, чтобы цвет фона ячеек (или, что еще лучше, всей строки) изменился на Orange.

Любая помощь с этим была бы великолепна

Крис

1 Ответ

2 голосов
/ 21 февраля 2012

Если вы собираетесь изменить свойство DataGridCell.Background, вам нужно использовать его где-то в вашем ControlTemplate

, например, используя TemplateBinding

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