2010-11-17 61 views
4

为什么IsSelected触发器仅在代码中缺少模板设置器时才起作用?我怎样才能让它们按预期运作?DataGridCell.Template样式覆盖IsSelected触发器

我在我的Application.Resources标记中有以下内容;

<Style TargetType="{x:Type DataGridCell}"> 
    <Style.Triggers> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" Value="Red"/> 
     </Trigger> 
    </Style.Triggers> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <ContentPresenter VerticalAlignment="Center"></ContentPresenter> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

这似乎模板制定者的存在也删除默认的蓝色背景选择多 – 2010-11-17 06:03:11

回答

11

当您重新模板DataGridCell时,也会丢失实际上是绘制背景的控件的边框。添加这个,它会工作。

<Style TargetType="{x:Type DataGridCell}"> 
    <Style.Triggers> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" Value="Red"/> 
     </Trigger> 
    </Style.Triggers> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Border Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center"></ContentPresenter> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

赞赏 – 2010-11-18 22:02:26