WPF 数据网格游标在调整列大小时不会更改

WPF datagrid cursor doesn't change on column resize

我遇到了一个无法出源的BUG,所以想问一下有没有人遇到过类似的情况。 设置很简单:

        <Grid>
            <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Test1" Width="100"/>
                    <DataGridTextColumn Header="Test2" Width="100"/>
                    <DataGridTextColumn Header="Test3" Width="100"/>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

数据网格之后当然还有更多代码,但我从来没有实现任何样式或主题,也没有以任何方式、形状或形式与数据网格交互,要包含所有这些代码会太多。 当我将鼠标悬停在列之间的分割线上时,鼠标光标不会更改为带有 2 个箭头 (Cursors.SizeWE) 的调整大小光标。 如果我单击并拖动并在任何其他方面都按预期工作,它仍然可以正常工作并调整大小。

在此设置中,我有一个样式,但仅适用于我的按钮,这里根本无法调整大小:

<Grid x:Name="grid_main" Height="Auto" Width="Auto" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <DataGrid Grid.Row="1">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Test1" Width="100"/>
                <DataGridTextColumn Header="Test2" Width="100"/>
                <DataGridTextColumn Header="Test3" Width="100"/>
            </DataGrid.Columns>
        </DataGrid>

        <DockPanel Width="Auto" Height="Auto">
            <Button x:Name="btn_loadSchema" Content="Load Schema" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left" 
                        Margin="5" Click="LoadSchema" Style="{StaticResource ModernButtonTheme}"/>
            <Button x:Name="btn_loadJSON" Content="Load JSON" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left"
                        Margin="5" Click="LoadJSON" Style="{StaticResource ModernButtonTheme}" IsEnabled="False"/>
            <Button x:Name="btn_saveJSON" Content="Save JSON" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left"
                        Margin="5" Click="SaveJSON" Style="{StaticResource ModernButtonTheme}" IsEnabled="False"/>
            <Label/>
        </DockPanel>

        <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <Grid x:Name="grid_content" Height="Auto" Width="Auto">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            </Grid>
         </ScrollViewer>
    </Grid>

您是否尝试将您的第一个 XAML 片段复制到一个空白的 WPF 项目中?那你能重现这个问题吗?我怀疑,因为我做不到。

至于您的第二个代码段,您应该删除 ScrollViewer 或通过将另一个 RowDefinition 添加到 Grid 并将其移动到另一行并增加 [=14] 的值=]附上属性。目前,它位于 DataGrid.

之上

试试这个:

<Window ...>
    <Grid x:Name="grid_main" Height="Auto" Width="Auto" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <DataGrid x:Name="dg" Grid.Row="1">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Test1" Width="100"/>
                <DataGridTextColumn Header="Test2" Width="100"/>
                <DataGridTextColumn Header="Test3" Width="100"/>
            </DataGrid.Columns>
        </DataGrid>

        <DockPanel Width="Auto" Height="Auto">
            <Button x:Name="btn_loadSchema" Content="Load Schema" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left" 
                        Margin="5" />
            <Button x:Name="btn_loadJSON" Content="Load JSON" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left"
                        Margin="5" IsEnabled="False"/>
            <Button x:Name="btn_saveJSON" Content="Save JSON" Grid.Row="0" Height="20" Width="85" DockPanel.Dock="Left"
                        Margin="5" IsEnabled="False"/>
            <Label/>
        </DockPanel>
    </Grid>
</Window>