我做了以下更改/解决方法来解决问题。这可能不是完美的解决方案,但对我有用。
我在Grid 中又添加了两列,一列在开头,一列在末尾。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=m_DataGrid, Path=RowHeaderWidth}" />
<ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}" />
<ColumnDefinition Width="{Binding ElementName=col2, Path=ActualWidth}" />
<ColumnDefinition Width="{Binding ElementName=col3, Path=ActualWidth}" />
<ColumnDefinition Width="{Binding ElementName=col4, Path=ActualWidth}" />
<ColumnDefinition x:Name="specialCol" />
</Grid.ColumnDefinitions>
然后我增加了DataGrid的ColumnSpan
...Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="6" ....
然后我在Constrcutor 的Window 中添加了这一行
specialCol.Width = new GridLength (2);
并将UpdateGrid 方法更改为此
void UpdateGrid()
{
ScrollViewer scrollview = FindVisualChild<ScrollViewer>(m_DataGrid);
Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility;
if (verticalVisibility == System.Windows.Visibility.Visible)
{
specialCol.Width = new GridLength(20);
m_Border.Width = m_DataGrid.ActualWidth - m_DataGrid.RowHeaderWidth - 17;
}
else
{
specialCol.Width = new GridLength(2);
m_Border.Width = m_DataGrid.ActualWidth - m_DataGrid.RowHeaderWidth;
}
}
在需要之前,我现在看不到任何 HorizontalScrollBar