2013-06-25 29 views
0
<Style x:Key="Body_Content_DataGrid_Centering" TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center" /> 
       </Grid> 

       <ControlTemplate.Triggers> 
        <Trigger Property="IsFocused" Value="True"> 
         <Setter Property="BorderBrush" Value="DarkGray" /> 
         <Setter Property="BorderThickness" Value="0.5" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value>    
    </Setter>    
</Style> 

我在App.xaml文件中包含上述代码。但触发器功能从不触发细胞聚焦。谁能解释为什么会发生这种情况?ControlTemplate.Trigger从未在Datagrid上触发Cell Focus

回答

1

尝试使用FocusVisualStyle。有了它,您可以设置焦点框架和附加值。

样品:

<!-- CellFocusVisual --> 
<Style x:Key="CellFocusVisual" TargetType="{x:Type Control}"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Control}"> 
       <Border SnapsToDevicePixels="True" CornerRadius="0" BorderThickness="2" BorderBrush="#7B2F81" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<!-- DataGridCell --> 
<Style TargetType="{x:Type DataGridCell}"> 
    <Setter Property="OverridesDefaultStyle" Value="True" /> 
    <Setter Property="BorderBrush" Value="{x:Null}" /> 
    <Setter Property="FocusVisualStyle" Value="{StaticResource CellFocusVisual}" /> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Border x:Name="BackgroundBorder" BorderThickness="3" Background="Transparent"> 
        <ContentPresenter VerticalAlignment="Center" Margin="4,0,6,0" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

着力点是不同的。请参阅link了解更多信息。

+0

是的,它在数学上起作用。 – neo