我不使用DataGrid或ListView,而是使用ScrollViewer和网格创建包含每个单元格列项目包装面板的单元格。
我希望有类似于datagrid或listview的头列的东西,在垂直滚动下面的项目时保持冻结,但是让它水平滚动。
我现在有下面这个主窗口的根目录,除了当有一个垂直滚动条显示时,项目的对齐是关闭的。
备注:
因此,当"innerScrollViewer“显示它的垂直滚动条时,项目不再与外部列标题对齐,并且由于右边的垂直滚动条,项目被移到左边。如何让它与外部列标题动态地对齐,用于显示或不显示垂直滚动条的两种情况?
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<Grid x:Name="mainGrid"
Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=ViewportWidth}">
<RowDefinitions>
<RowDefinition Height="Auto" /> <!-- Contains Header columns dynamically added to be "frozen" -->
<RowDefinition Height="*" /> <!-- "row groupings" -->
</RowDefinitions>
<ScrollViewer x:Name="innerScrollViewer"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
Grid.Row="1"
Grid.ColumnSpan="{Binding Path=NumColumns}">
<ItemsControl Name="mainWorkItemsItemsControl"
Width="{Binding ActualWidth, ElementName=mainGrid}"
ItemsSource="{Binding MyGroups}"
ItemTemplate="{StaticResource groupedTemplate}" />
</ScrollViewer>
</Grid>
</ScrollViewer>
<DataTemplate x:Key="groupedTemplate">
<ItemsControl ItemsSource="{Binding GroupItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!-- Creates a grid with one row and the same number of columns as "mainGrid" above with a star sizing for each column -->
<SimpleGrid Rows="Auto"
Columns="{p:PyBinding CommaDelimit($[.NumColumns]\, \'*\')}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Path=GroupedColumnItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MyControl />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column"
Value="{Binding Path=Index}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</DataTemplate>发布于 2011-11-27 16:20:47
你有三个选择。
默认情况下,
https://stackoverflow.com/questions/8282691
复制相似问题