2010-11-17 62 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