c# - 水平滚动条可见时如何固定DataGrid中列的宽度?

标签 c# wpf datagrid

我将复杂的 header 与数据网格一起使用,如 this .但是我遇到了滚动条可见性的问题,它也花费了一个空间,所以宽度不能与网格完美匹配。我的Grid在<Column.Definition>就是这样的

  <ColumnDefinition Width="{Binding ElementName=Column1, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column2, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column3, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column4, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column5, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column6, Path=ActualWidth}"/>
  <ColumnDefinition Width="{Binding ElementName=Column7, Path=ActualWidth}"/>
... till column 29

Anda 我有 Column.Definition 的数据网格像这样

 <DataGrid.Columns>
<mui:DataGridTextColumn x:Name="Column1"  Width="50" Header="Segmen"  Binding="{Binding B4R1,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<mui:DataGridTextColumn x:Name="Column2" Width="50" Header="Fisik" Binding="{Binding B4R2,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" />
<mui:DataGridTextColumn x:Name="Column3" Width="50" Header="Sensus" Binding="{Binding B4R3,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}"/>
<mui:DataGridTextColumn x:Name="Column4" Width="50" Header="Tempat Tinggal" Binding="{Binding B4R4,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" />
<mui:DataGridTextColumn x:Name="Column5" Width="50" Header="Campuran" Binding="{Binding B4R5,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" />
.... till column29

结果还是这样:

如何解决列的匹配宽度与这样可见的 scollbar? enter image description here

更新

虽然我已经设置了宽度,但它仍然保留空间..

enter image description here

更新 2

我不知道滚动条成功调整大小但空间仍然存在 enter image description here

最佳答案

首先,你可以像这样隐藏ScrollBar的Visibility:

<DataGrid Name="dataGrid"
          ScrollViewer.VerticalScrollBarVisibility="Hidden" ... />

其次,你可以为ScrollBar设置一个固定的Width:

<Window x:Class="MyClass.MainWindow"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"

<DataGrid Name="dataGrid">
    <DataGrid.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">20</sys:Double>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">20</sys:Double>
    </DataGrid.Resources>
...
</DataGrid>

第三,你可以设置ScrollBar的样式:

<DataGrid.Resources>
    <Style TargetType="{x:Type ScrollBar}">
        <Style.Triggers>                       
            <Trigger Property="Orientation" Value="Vertical">
                <Setter Property="Width" Value="10" />
                <Setter Property="MinWidth" Value="10" />
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.Resources>

关于c# - 水平滚动条可见时如何固定DataGrid中列的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140746/

相关文章:

c# - 如何在 WPF 中动态创建数据网格?

c# - 如何从旧的 asp.net 成员资格创建用户到新的 MVC .net 并发送密码重置

wpf - 使用MVVM在WPF中选择列表框的项目

php - 不打印网格线

ajax - 通过分页在Primefaces DataGrid上的页面更改时更新组件

c# - 在鼠标悬停时更改矩形背景

c# - 条件运算符的使用

c# - 引用类中的 Self's Type

c# - Winforms 中的简单相机捕获

c# - 在另一个线程中创建 WPF 命令