2015-11-04 86 views
0

對於我的DataGridRowDataGridCell,我有一個Style。在我的RowStyle中,我更改了所選的背景,並在我的CellStyle中更改了我關注的Cell的背景。當我第一次點擊一個新的時,這是有效的。但是,如果我點擊中的另一個Cell,則不會應用Style。如果我用我的箭頭鍵更改Cell,它可以工作,而不是如果我用鼠標點擊。在我DataGrid我有SelectionMode =單。未顯示行中的聚焦單元格

<!--DataGridRow--> 
    <Style x:Key="MYDGRowStyle" TargetType="{x:Type DataGridRow}">    
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <!--<Setter Property="OverridesDefaultStyle" Value="True" />-->   
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRow}"> 
        <Grid x:Name="RowGridTop"> 
         <Grid Grid.ZIndex="89" x:Name="RowGrid"/> 
          <Border 
            Grid.ZIndex="88" 
            x:Name="DGR_Border" 
            Background="{TemplateBinding Background}" 
            BorderBrush="{TemplateBinding BorderBrush}" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> 
           <SelectiveScrollingGrid x:Name="selectiveScrollingGrid"> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="Auto"/> 
             <ColumnDefinition Width="*"/> 
            </Grid.ColumnDefinitions> 
            <Grid.RowDefinitions> 
             <RowDefinition Height="Auto" /> 
             <!--<RowDefinition Height="Auto" />--> 
            </Grid.RowDefinitions> 
            <DataGridCellsPresenter x:Name="dataGridCellsPresenter" Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                  Focusable="True" /> 
            <DataGridRowHeader x:Name="dataGridRowHeader" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Grid.RowSpan="2" 
             Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=HeadersVisibility, Converter={x:Static DataGrid.HeadersVisibilityConverter}, 
             ConverterParameter={x:Static DataGridHeadersVisibility.Row}}"/> 
            <Grid Grid.Column="1" Grid.Row="1" Name="Details" Visibility="Collapsed"> 
             <DataGridDetailsPresenter x:Name="dataGridDetailsPresenter" /> 
            </Grid> 
           </SelectiveScrollingGrid> 
          </Border>        
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True">         
          <Setter Property="Visibility" TargetName="dataGridDetailsPresenter" Value="Hidden"/> 
          <Setter Property="Background" TargetName="RowGrid" Value="{DynamicResource Brush_DataGridSelected}" />         
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter>    
    </Style> 
    <!--DataGridRow--> 



    <!--DataGridCell--> 
    <Style x:Key="MYDGCellStyle" TargetType="{x:Type DataGridCell}"> 
     <Setter Property="OverridesDefaultStyle" Value="True" /> 
     <Setter Property="Template" Value="{DynamicResource MYDGCellControlTemplate}" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsReadOnly}" Value="True"> 
       <Setter Property="Background"> 
        <Setter.Value> 
         <SolidColorBrush Color="Gray" Opacity="0.3" /> 
        </Setter.Value> 
       </Setter> 
      </DataTrigger>     
     </Style.Triggers> 
    </Style> 

    <ControlTemplate x:Key="MYDGCellControlTemplate" TargetType="{x:Type DataGridCell}">    
      <Grid> 
      <Grid Grid.ZIndex="99" x:Name="CellGrid"/> 
      <Border Grid.ZIndex="98" Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center" Margin="4,0,6,0" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
      </Grid>    
     <ControlTemplate.Triggers> 
      <Trigger Property="IsFocused" Value="True"> 
       <Setter Property="Background" TargetName="CellGrid" Value="{DynamicResource Brush_DataGridCellFocused}" />          
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate>   
    <!--DataGridCell--> 

如果我的目標在「RowGridTop」我Trigger聚焦Cell顯示正常,但在ZIndex是不正確的。 Here顯示了爲什麼我需要 附加Grid

回答

0

好的,我做到了。我必須更改ZIndex,以便DataGridRowStyle上的值高於DataGridCellStyle上的值。我還必須在我的「RowGrid」Grid上設置IsHitTestVisible="False"

相關問題