在 Windows Phone 上设置 ListView 的 GroupStyle.Panel

2023-11-23

我正在尝试创建一个ListView分组,其中每个组中的元素水平显示(作为可滚动内容)。无论我尝试什么GroupStyle.Panel of the ListView它似乎对列表没有任何影响。

我的 XAML 如下所示:

  <ListView x:Name="itemListView"
            Padding="10"                
            SelectionMode="None"
            IsSwipeEnabled="False"
            IsItemClickEnabled="True"
            ItemTemplate="{StaticResource listItemTemplate}">
     <ListView.GroupStyle>
        <GroupStyle>
           <GroupStyle.Panel>
              <ItemsPanelTemplate>
                 <ItemsWrapGrid ItemWidth="144" Orientation="Horizontal" />
              </ItemsPanelTemplate>
           </GroupStyle.Panel>
           <GroupStyle.HeaderTemplate>
              <DataTemplate>
                 <Grid>
                    <TextBlock Text="{Binding DisplayTitle}" 
                               Margin="0,10,0,5"
                               Foreground="Black"
                               Style="{StaticResource SubheaderTextBlockStyle}" 
                               TextWrapping="NoWrap" />
                 </Grid>
              </DataTemplate>
           </GroupStyle.HeaderTemplate>
        </GroupStyle>
     </ListView.GroupStyle>
  </ListView>

Where

<Page.Resources>
   <DataTemplate x:Key="listItemTemplate">
      <Grid Width="144" Margin="5">
         <!-- details -->
      </Grid>
   </DataTemplate>
</Page.Resources>

下图左侧显示了我得到的实际结果,右侧显示了我想要的结果。

enter image description here

我尝试使用ItemsWrapGrid具有不同的属性,我尝试了StackPanel甚至一个VariableSizedWrapGrid,但列表项的显示方式没有任何变化。

如何才能做到这一点?


@kubakista 是对的

看起来如果 ListView.ItemsPanel 包含 ItemsStackPanel 那么 GroupStyle.Panel 被忽略...

然而,改变这个并不能解决你的问题,因为 -

  1. 滚动变得有点滞后。
  2. 没有水平滚动。
  3. The ListView失去虚拟化。
  4. 漂亮的组标题滚动动画消失了。

这是一种不改变结构的替代方案ListView本身只是对数据结构进行一点修改。

这个想法是,将一组下的每个水平矩形列表视为一件收藏品在用户界面上。

这意味着,组中的每个组ListView只会有一个子项,它实际上是一组矩形,将以水平可滚动的形式呈现ItemsControl.

所以,假设你有一些类型的集合ObservableCollection<Item> as the CollectionViewSource, the Item现在将成为类型<ObservableCollection<Item>>为了保存矩形的集合。因此,集合的类型需要更新为类似ObservableCollection<ObservableCollection<Item>>.

在 - 的里面ListView's ItemTemplate,您需要创建一个水平滚动的ScrollViewer并放一个ItemsControl里面。确保您已经设置了后者ItemsSource to {Binding}.

要启用水平滑动,您需要禁用tilt通过编辑默认样式的效果ListViewItem并注释掉以下代码。

<!--
<VisualStateGroup.Transitions>
    <VisualTransition From="Pressed" To="Normal">
        <Storyboard>
            <PointerUpThemeAnimation Storyboard.TargetName="TiltContainer"/>
        </Storyboard>
    </VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal"/>
<VisualState x:Name="Pressed">
    <Storyboard>
        <PointerDownThemeAnimation Storyboard.TargetName="TiltContainer"/>
    </Storyboard>
</VisualState>
-->

我附上了一个工作示例项目here以及下面显示的屏幕截图。

enter image description here

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows Phone 上设置 ListView 的 GroupStyle.Panel 的相关文章

  • 动态更改 ListView 的行布局

    我正在一个应用程序中开发一个聊天模块 我希望来自两个参与者的消息以相反的对齐方式 其他用户左对齐 我自己的消息右对齐 现在 我的行布局是通过静态布局 xml 传入的 消息和头像左对齐 有没有办法动态修改视图 或者有没有办法传递替代行布局供
  • WPF 列表框在鼠标悬停时选择项目

    我正在尝试为列表框创建一种样式 当鼠标放在该项目上时 该样式会将所选项目设置为该项目 有什么提示吗 您可以使用 ListBox 本身影响其所有项目的样式来完成此操作
  • 如何允许用户对列表中的项目重新排序?

    我有一个 Android 应用程序 用户可以在其中将项目添加到列表中 并且我希望他们能够按照自己的意愿对列表中的项目进行重新排序 而不是仅仅向他们提供不同的排序顺序 为项目添加位置设置 它们来自数据库 很容易 但是用户可以使用哪种 UI 元
  • 阻止 ItemsControls 共享过滤器

    我有两个 ItemsControl 一个是 ListView 另一个是我正在开发的自定义控件 我已将两个控件的 ItemsControl ItemsSource 属性设置为同一个 IEnumerable 对象 在本例中为 List 我将筛选
  • WPF 图片库

    我将驱动一个需要向用户呈现图像组的触摸屏应用程序 不是网络应用程序 我们的愿望是呈现具有页面前进 后退功能的 3x3 图像网格 他们可以选择一些 我将只展示这些图像 我没看到ListView完全符合我的要求 尽管 WPF 足够大 我很可能错
  • 如何在 1 个活动 (android) 中显示 2 个视图?

    假设我打开了一个网络视图 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout ma
  • 如何在样式中访问控件父级的属性

    我的列表视图将项目数据模板化为标签 我正在为该标签设计一种样式 但我不知道如何访问父级的 ListViewItem IsSelected 属性 编辑 尝试了下面的建议 但仍然出现异常 这是我的完整代码
  • XAML - 将单元格的行和列索引绑定到自动化 ID

    我正在为 WPF 数据网格中的各个单元格提供自动化 ID 但遇到了一些障碍 我决定尝试根据单元格在网格中的位置 行索引和列索引 来命名单元格 使用 UI 检查器并突出显示有问题的 DataGridCell 之一会显示以下属性 GridIte
  • 如何设置上拉刷新SwipeRefreshLayout

    我看到很多 ListView 下拉刷新的库 但是当从上到下拉动时它们是工作的 但是从下到上拉动时我如何刷新 我可以用这个做吗滑动刷新布局 http developer android com reference android suppor
  • Xamarin Forms 可折叠 StackLayout

    我正在尝试实现一种可折叠的 StackLayout 每次用户单击该按钮时 它都会展开或折叠堆栈布局以显示 隐藏更多详细信息 我能够使用下面的代码实现更多 更少的效果 但它看起来不正确 效果也不是很好 因为它立即增长 并且我正在将效果应用到其
  • 优化 WPF 中由单元格组成的网格以获得最短路径

    我目前正在尝试在 WPF 中制作一个由 Cell 对象组成的网格 我需要将单元格绑定到对象 该对象需要位于二维数组中 我需要它很大 可扩展 并改变单元格的颜色并将数据存储在对象中 我已经实现了 但是绘制网格似乎很慢 100x100 网格需要
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • ListViewItem 与 CheckBox IsChecked 绑定到 ViewModel

    我有一个带有 DataTemplate 的 ListView 用于为每个 ListViewItem 显示一个复选框
  • 动态显示/隐藏 Xamarin.Forms.ListView 的页眉或页脚

    有没有一种方法可以根据运行时的条件动态显示 隐藏 ListView 的标题
  • Listview里面只有一个Element

    您好 我正在尝试将列表视图放入列表视图中的列表视图中 唯一的问题是只有第一个列表视图正确显示所有元素 此后的每个列表视图仅包含一个元素 UPDATE 创建我自己的不可滚动列表视图解决了这个问题 https stackoverflow com
  • 更改 Xamarin 中 ListView 所选项目的背景颜色

    我在 Xamarin 中创建了一个主从类型项目 当我从主页中选择一个项目时 背景颜色默认为橙色 我怎样才能将其更改为我选择的颜色 此问题是 Android 特有的 在 Android 项目中将此行添加到 Resources values s
  • Windows Phone 后台任务过早停止

    我正在开发一个 WP8 1 SL 应用程序 它使用后台任务 不是代理 我的任务由 TimerTrigger 触发 每 30 分钟一次 我相信这是 Windows Phone 的最小间隔 对吧 它正在做很多工作 并且由于某种原因 有时它会被中
  • Wpf ICollectionView 绑定项无法解析类型对象的属性

    我已经绑定了一个GridView与ICollectionView在 XAML 设计器中 属性是未知的 因为CollectionView已转化为类型Object并且无法访问实体属性 它运行良好 没有错误 但设计器将其显示为错误 如果我绑定到集
  • 具有自定义镶边的 WPF 窗口在右侧和底部有不需要的轮廓

    我使用 Microsoft Windows Shell dll 创建了带有自定义镶边的 WPF 窗口 这是代码
  • ComboBox.ItemTemplate 未正确显示选择

    在问题中c wpf 无法同时设置 DisplayMemberPath 和 ItemTemplate https stackoverflow com questions 18273415 c sharp wpf cannot set both

随机推荐