我有一个
DataGridRowHeader
的自定义样式,并且触发器 IsPressed
似乎没有触发。不过IsMouseOver
工作得很好。我基本上有相同的风格,它的触发器是DataGridColumnHeader
,一切都很完美。
为什么 RowHeader 不起作用?有替代方案吗?
<Style x:Key="DataGridRowHeaderStyle1" TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Background" Value="{DynamicResource Theme.DataGrid.Background}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<Grid x:Name="gridRow">
<Border x:Name="Border"
Background="{TemplateBinding Background}"
BorderBrush="{DynamicResource Theme.DataGrid.Border}"
BorderThickness="0,0,1,1"
Margin="0,0,0,0"/>
<ContentPresenter Margin="8,10,7,10"
VerticalAlignment="Center"/>
<Thumb x:Name="PART_TopHeaderGripper"
VerticalAlignment="Top"
Style="{StaticResource RowHeaderGripperStyle}"/>
<Thumb x:Name="PART_BottomHeaderGripper"
VerticalAlignment="Bottom"
Style="{StaticResource RowHeaderGripperStyle}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="Border" Value="{DynamicResource Theme.DataGrid.Highlight}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="Border" Value="Red"/> <!-- This does not work -->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这里的触发器不会触发:
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="Border" Value="Red"/> <!-- This does not work -->
</Trigger>
不幸的是,我无法重现这个问题。了解您正在使用哪个框架会很有帮助(我尝试了 .Net6 并且它在我的代码中工作)
我建议您尝试以下其中一项: