0
對於我的DataGridRow
和DataGridCell
,我有一個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
。