c# - 具有 GroupStyle 的 ListBox 按组滚动,而不是按项目滚动
问题描述
我有ListBox
一个GroupStyle
。如果我按组使用GroupStyle
卷轴ScrollViewer
而ListBox
不是那个项目。因此,如果该组的项目数量超过屏幕上的容量,则用户永远不会看到屏幕外的项目。如果我GroupStyle
将ScrollViewer
作品注释掉,比如逐项滚动。(我添加了ControlTemplate
尝试不同的东西)。
<UserControl.Resources>
<CollectionViewSource x:Key="BusStopsFlattend" Source="{Binding BusStopsFlat}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="CountryCode" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</UserControl.Resources>
<ListBox Grid.Row="1" ItemsSource="{Binding Source={StaticResource BusStopsFlattend}}" Margin="48,0,48,60">
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<ScrollViewer CanContentScroll="True" HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,24,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<controls:IconViewbox Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" IconData="{StaticResource IconPathPencilOutline}" IconSize="72" Margin="0,0,24,0" />
<TextBlock Grid.Column="1" Grid.Row="0" FontSize="32" TextWrapping="Wrap" Text="Name" />
<TextBlock Grid.Column="1" Grid.Row="1" FontSize="22" TextWrapping="Wrap" Text="Address" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</GroupStyle.Panel>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Grid.Row="0" FontSize="36" FontWeight="Bold" Margin="0,48,0,24" Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
解决方案
只需将ScrollViewer.CanContentScroll
属性设置False
为使用物理滚动而不是逻辑滚动。请记住,如果您决定使用虚拟化,这将禁用它。
推荐阅读
- vb.net - 第二次显示后未调用表单显示
- python - 我在梯度下降中遇到问题,它给我的 thetas 没有
- android - 如何平滑离散数据点以使其看起来连续?
- redis - Redis位图split key分割策略
- html - 部署 react/express 应用程序后出现内容安全策略错误
- php - 是否可以在 PHP 中放置两个表单并保存两个 cookie 值?
- r - 运行 spdep::lagsarlm(空间自回归模型)后如何解决“impacts()”邻居长度错误?
- amazon-web-services - AWS RDS 数据 API 执行语句不返回列名
- python - Django,bycrypt检查密码返回false
- c - 我是否必须将映射的长度添加到带有 MAP_GROWSDOWN 和 MAP_STACK 标志的 mmap 返回的指针?