Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF Datagrid向datarowheader添加按钮_C#_Wpf_Datagrid - Fatal编程技术网

C# WPF Datagrid向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"

我有一个包含datagrid的WPF应用程序。我正在尝试向datarowheader添加一个带有三角形形状的切换按钮。形状应指向右侧,然后单击“显示行详细信息”,箭头应指向下方

 <!-- 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的背景,而不是使用边框。