Wpf 如何支持在DataGrid中重新调整DataGridRowHeader列的大小

Wpf 如何支持在DataGrid中重新调整DataGridRowHeader列的大小,wpf,wpfdatagrid,styling,resize,datagridrowheader,Wpf,Wpfdatagrid,Styling,Resize,Datagridrowheader,我想允许重新调整dataGrid第0列的大小,该列包含SelectAll按钮和行标题- 图片取自- 试试这个试试这个 XAML: <tk:DataGrid x:Name="MyDataGrid" RowHeaderWidth="15" ItemsSource="{StaticResource MyData}" AutoGenerateColumns="False">

我想允许重新调整dataGrid第0列的大小,该列包含SelectAll按钮和行标题-

图片取自-


试试这个

试试这个

XAML:

   <tk:DataGrid x:Name="MyDataGrid"
                RowHeaderWidth="15"
                ItemsSource="{StaticResource MyData}"
                AutoGenerateColumns="False">
        <tk:DataGrid.Columns>
            <tk:DataGridTextColumn Binding="{Binding ID}">
                <tk:DataGridTextColumn.HeaderTemplate>
                    <DataTemplate>
                        <DockPanel>
                            <GridSplitter
                                DockPanel.Dock="Left"
                                VerticalAlignment="Stretch"
                                HorizontalAlignment="Left" Width="2"
                                DragDelta="GridSplitter_DragDelta"/>
                            <TextBlock Text="ID" DockPanel.Dock="Right"/>
                        </DockPanel>
                    </DataTemplate>
                </tk:DataGridTextColumn.HeaderTemplate>
            </tk:DataGridTextColumn>
            <tk:DataGridTextColumn Header="Name"
                                   Binding="{Binding Name}">
            </tk:DataGridTextColumn>
        </tk:DataGrid.Columns>
    </tk:DataGrid>
     private void GridSplitter_DragDelta
        (object sender,
         System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        if (MyDataGrid.RowHeaderWidth + e.HorizontalChange >= 15)
        {
            MyDataGrid.RowHeaderWidth = MyDataGrid.RowHeaderWidth + e.HorizontalChange;
        }
    }

您可以覆盖
RowHeaderTemplate
,并将此网格拆分器停靠在右侧。但对我来说,将其停靠在第一列标题的左侧效果最好

GridViewColumn
是特定的,与WPF datagrid无关。
     private void GridSplitter_DragDelta
        (object sender,
         System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        if (MyDataGrid.RowHeaderWidth + e.HorizontalChange >= 15)
        {
            MyDataGrid.RowHeaderWidth = MyDataGrid.RowHeaderWidth + e.HorizontalChange;
        }
    }