[英]WPF: How to freeze column header in datagrid
How can I freeze my column header in a DataGrid
in my WPF
Window so that when I scroll down, the header is still visible. 如何在我的
WPF
窗口中冻结DataGrid
中的列标题,以便在向下滚动时,标题仍然可见。
[ Edit ] [ 编辑 ]
Here's my XAML
: 这是我的
XAML
:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Visible">
<DataGrid Name="ModelsGrid" Background="Transparent" Foreground="Black" RowHeight="30" ColumnWidth="100" AutoGenerateColumns="False" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Property ID" Binding="{Binding Path=Id}" />
<DataGridTextColumn Header="Name" Width="Auto" Binding="{Binding Path=PropertyName}" />
<DataGridTextColumn Header="Description" Width="Auto" Binding="{Binding Path=Description}" />
<DataGridTextColumn Header="Access" Width="Auto" Binding="{Binding Path=Accessibility}" />
<DataGridTextColumn Header="Type" Width="Auto" Binding="{Binding Path=Type}" />
<DataGridTextColumn Header="Category" Width="Auto" Binding="{Binding Path=Category}" />
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
[ Edit ] [ 编辑 ]
I just had to get rid of the ScrollViewer
and it's solved. 我只是摆脱了
ScrollViewer
并且它已经解决了。
我只是摆脱了ScrollViewer并且它已经解决了。
Datagrid具有FreeColumnCount属性 - 将其设置为1并查看会发生什么。
You do it with nested scroll viewers. 您可以使用嵌套滚动查看器来执行此操作。 Here's the
Template
property setter for a Style
of TargetType="DataGrid"
: 这里的
Template
属性setter的Style
的TargetType="DataGrid"
:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGrid">
<DockPanel Dock="Top" HorizontalAlignment="Stretch">
<ScrollViewer DockPanel.Dock="Top"
CanContentScroll="False"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Disabled"
Focusable="false"
Padding="{TemplateBinding Padding}">
<DockPanel Dock="Top" VerticalAlignment="Stretch">
<DataGridColumnHeadersPresenter DockPanel.Dock="Top" Grid.Row="0"/>
<ScrollViewer HorizontalScrollBarVisibility="Hidden"
DockPanel.Dock="Top"
VerticalScrollBarVisibility="Auto"
VerticalAlignment="Stretch"
CanContentScroll="False"
Focusable="false"
Padding="{TemplateBinding Padding}">
<ItemsPresenter VerticalAlignment="Stretch"/>
</ScrollViewer>
</DockPanel>
</ScrollViewer>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
Of course the ScrollViewer
can also be styled to reflect your UI design. 当然,
ScrollViewer
也可以设计为反映您的UI设计。
it is very hard to freeze DataGrid column, Better to use DataGridView for that 冻结DataGrid列非常困难,最好使用DataGridView
http://msdn.microsoft.com/en-us/library/28e9w2e1.aspx http://msdn.microsoft.com/en-us/library/28e9w2e1.aspx
http://msmvps.com/blogs/peterritchie/archive/2008/08/11/datagridviewcolumn-frozen.aspx http://msmvps.com/blogs/peterritchie/archive/2008/08/11/datagridviewcolumn-frozen.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.