在 WPF Datagrid 中的 ColumnHeader 下方滚动
Scrolling Below ColumnHeader in WPF Datagrid
我试图让这个 single-column DataGrid 在我悬停在网格上并移动鼠标滚轮时滚动。
<Grid Height ="500" .....
<!-- ListCollectionView for sorting -->
<DataGrid Name="dgTable" Style ="{DynamicResource DataGridStyle1}"
Grid.Row ="1" Grid.Column ="0"
VerticalContentAlignment="Stretch"
ItemsSource="{Binding ItemsLcv}"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Single"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserSortColumns="True"
HorizontalAlignment="Center"
Width="215" Height="500">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" SortMemberPath="descr"
IsReadOnly="True"
CanUserSort="True"
Binding="{Binding Path=descr, Mode=TwoWay, UpdateSourceTrigger= PropertyChanged}"
Width ="215"/>
</DataGrid.Columns>
这是 DataGrid 的样式。
<Style x:Key="DataGridStyle1" TargetType="DataGrid">
<Setter Property="RowHeaderWidth" Value="0" />
<Setter Property = "ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
<Setter Property = "ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
</Style>
这是列标题的样式:
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Height" Value="35" />
<Setter Property="SeparatorBrush" Value="#79858b" />
<Setter Property="FontWeight" Value="Black" />
<Setter Property="Background" Value ="{DynamicResource Brush1}"/>
<Setter Property="BorderBrush" Value="#FF60727B"/>
<Setter Property="BorderThickness" Value="2,0,2,2"></Setter>
</Style>
当我将 DataGrid 放在 ScrollViewer 标记内时,滚动有效,但 ColumnHeader 消失了。我需要保留 Columnheader 进行排序。
我已经查看了有关冻结行的 SO 帖子,Frozen rows in WPF DataGrid?。我希望有一个比在 ScrollViewer 组件上使用大量控件模板更简单的解决方案。提前谢谢你。
DataGrid
有自己的滚动功能,可以按您想要的方式工作。
尝试去掉 ScrollViewer
,并设置 DataGrid 的 VerticalAlignment="Stretch"
。不是 VerticalContentAlignment
,那是不同的 属性。
XAML 布局是曲折的小属性的迷宫,除了它们完全不同之外,它们都是相似的。
我试图让这个 single-column DataGrid 在我悬停在网格上并移动鼠标滚轮时滚动。
<Grid Height ="500" .....
<!-- ListCollectionView for sorting -->
<DataGrid Name="dgTable" Style ="{DynamicResource DataGridStyle1}"
Grid.Row ="1" Grid.Column ="0"
VerticalContentAlignment="Stretch"
ItemsSource="{Binding ItemsLcv}"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Single"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserSortColumns="True"
HorizontalAlignment="Center"
Width="215" Height="500">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" SortMemberPath="descr"
IsReadOnly="True"
CanUserSort="True"
Binding="{Binding Path=descr, Mode=TwoWay, UpdateSourceTrigger= PropertyChanged}"
Width ="215"/>
</DataGrid.Columns>
这是 DataGrid 的样式。
<Style x:Key="DataGridStyle1" TargetType="DataGrid">
<Setter Property="RowHeaderWidth" Value="0" />
<Setter Property = "ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
<Setter Property = "ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
</Style>
这是列标题的样式:
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Height" Value="35" />
<Setter Property="SeparatorBrush" Value="#79858b" />
<Setter Property="FontWeight" Value="Black" />
<Setter Property="Background" Value ="{DynamicResource Brush1}"/>
<Setter Property="BorderBrush" Value="#FF60727B"/>
<Setter Property="BorderThickness" Value="2,0,2,2"></Setter>
</Style>
当我将 DataGrid 放在 ScrollViewer 标记内时,滚动有效,但 ColumnHeader 消失了。我需要保留 Columnheader 进行排序。
我已经查看了有关冻结行的 SO 帖子,Frozen rows in WPF DataGrid?。我希望有一个比在 ScrollViewer 组件上使用大量控件模板更简单的解决方案。提前谢谢你。
DataGrid
有自己的滚动功能,可以按您想要的方式工作。
尝试去掉 ScrollViewer
,并设置 DataGrid 的 VerticalAlignment="Stretch"
。不是 VerticalContentAlignment
,那是不同的 属性。
XAML 布局是曲折的小属性的迷宫,除了它们完全不同之外,它们都是相似的。