我已覆盖默认行标题样式以使用我的自定义按钮:
<Style x:Key="RowHeaderStyle" TargetType="DataGridRowHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridRowHeader">
<Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Style="{StaticResource RowHeaderButton}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当然,问题是单击按钮不再选择该行。我是否必须在 IsPressed 事件上调用自定义方法?我如何知道行索引?你会怎样做呢?
Thanks!
我最终只使用了样式,事实证明,如果不是太激烈的话,你可能可以做你想做的事。如果有人设法获取后面的代码来处理 DataGridHeaderBorder 上的行选择,请告诉我!
例子:
<...xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"...>
<BooleanToVisibilityConverter x:Key="bool2VisibilityConverter"/>
<LinearGradientBrush x:Key="RowHeaderBackgroundBrush" EndPoint="0.728,0.5" StartPoint="0.272,0.5">
<GradientStop Color="#FF494949" Offset="0"/>
<GradientStop Color="#FF3E3E3E" Offset="1"/>
<GradientStop Color="#FF494949" Offset="0.50"/>
<GradientStop Color="#FF3E3E3E" Offset="0.50"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="RowHeaderBackgroundBrushMouseOver" EndPoint="0.728,0.5" StartPoint="0.272,0.5">
<GradientStop Color="#FF666666" Offset="0"/>
<GradientStop Color="#FF525252" Offset="1"/>
<GradientStop Color="#FF666666" Offset="0.50"/>
<GradientStop Color="#FF525252" Offset="0.50"/>
</LinearGradientBrush>
<Style x:Key="RowHeaderGripperStyle" TargetType="{x:Type Thumb}">
<Setter Property="Height" Value="8"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Cursor" Value="SizeNS"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="RowHeaderBorder" TargetType="Border">
<Setter Property="Background" Value="{StaticResource RowHeaderBackgroundBrush}" />
<Setter Property="BorderBrush" Value="#FF313131" />
<Setter Property="BorderThickness" Value="0,0,1,1" />
<Setter Property="CornerRadius" Value="0" />
<Setter Property="Margin" Value="0" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource RowHeaderBackgroundBrushMouseOver}"></Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="RowHeaderStyle1" TargetType="DataGridRowHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridRowHeader">
<Grid>
<Microsoft_Windows_Themes:DataGridHeaderBorder IsPressed="{TemplateBinding IsPressed}" Orientation="Horizontal" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}" Style="{StaticResource RowHeaderBorder}">
<StackPanel Orientation="Horizontal">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
<Control SnapsToDevicePixels="false" Template="{Binding ValidationErrorTemplate, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Visibility="{Binding (Validation.HasError), Converter={StaticResource bool2VisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"/>
</StackPanel>
</Microsoft_Windows_Themes:DataGridHeaderBorder>
<Thumb x:Name="PART_TopHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Top"/>
<Thumb x:Name="PART_BottomHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Bottom"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)