C# WPF Datagrid向datarowheader添加按钮
我有一个包含datagrid的WPF应用程序。我正在尝试向datarowheader添加一个带有三角形形状的切换按钮。形状应指向右侧,然后单击“显示行详细信息”,箭头应指向下方C# WPF Datagrid向datarowheader添加按钮,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个包含datagrid的WPF应用程序。我正在尝试向datarowheader添加一个带有三角形形状的切换按钮。形状应指向右侧,然后单击“显示行详细信息”,箭头应指向下方 <!-- The data grid to display orders--> <DataGrid DataContext="{Binding OrderBlock}" x:Name="dataGridOrders"
<!-- The data grid to display orders-->
<DataGrid DataContext="{Binding OrderBlock}"
x:Name="dataGridOrders"
ItemsSource="{Binding Orders}"
Style="{StaticResource DataGridTemplate}"
ColumnHeaderStyle="{StaticResource DG_ColumnHeader}"
RowHeaderStyle="{StaticResource DG_RowHeader}"
RowStyle="{StaticResource DG_Row}"
CellStyle="{StaticResource DG_Cell}"
RowDetailsTemplate="{StaticResource DG_RowDetail}"
AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Silver"
RowHeaderWidth="30"
Margin="25,5,20,15">
<!-- Data Grid row header template -->
<Style x:Key="DG_RowHeader" TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Width" Value="35"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<Border x:Name="DGRH_Border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="LightGray"/>
<GradientStop Offset="1" Color="WhiteSmoke"/>
</LinearGradientBrush>
</Border.Background>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<DataTemplate>
<TextBlock Text="M"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
您可以使用一个控件模板,该模板的行标题有一个类似于以下的切换按钮:
<Style x:Key="DG_RowHeader" TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Width" Value="35"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<ToggleButton Content="button" x:Name="btn"/>
<ControlTemplate.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<Binding ElementName="btn" Path="IsChecked"></Binding>
</DataTrigger.Binding>
<DataTrigger.Setters>
<Setter Property="Content" TargetName="btn" Value="-"/>
</DataTrigger.Setters>
</DataTrigger>
<DataTrigger Value="False">
<DataTrigger.Binding>
<Binding ElementName="btn" Path="IsChecked"></Binding>
</DataTrigger.Binding>
<DataTrigger.Setters>
<Setter Property="Content" TargetName="btn" Value="+"/>
</DataTrigger.Setters>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
问题又来了?如何在DataGridUMA中的行中添加切换按钮确实有效。我唯一的一个小问题是,我的DG_RowHeader风格的边界应该放在哪里?由于现在未应用LinearGradientBrush。切换按钮可以放置在边框内,因此必须使切换按钮的背景透明,才能看到Border.background。另一个选项是-直接使用LinearGradientBrush设置ToggleButton的背景,而不是使用边框。