gpt4 book ai didi

wpf - 电子节目指南 (EPG) XAML

转载 作者:行者123 更新时间:2023-12-01 08:11:22 24 4
gpt4 key购买 nike

有没有办法实现EPG将 XAML 用于 WinPhone/WinRT?我看到很多 iOS/Android/Web 应用程序这样做,但没有 WP 或 WinStore。

  • 它应该支持大量项目(500 个 channel ,每个 channel 有 N 个节目,其中 N 是一周内的节目数量)
  • 它内部可能有间隙,例如缺少某些程序或整行没有数据,但仍应显示空(透明)行。
  • 每行中的项目数总是不同的(这就是 EPG 的工作方式)
  • 加载应该快速且滚动流畅。
  • 内存使用应该是正常的,应用程序不应该因为许多绘制的 View 而崩溃,即元素需要被虚拟化(重用)

  • GridView 看起来有点类似,但是有一些问题:
  • 使项目大小不同 - 需要将 itemsPanel 切换到 VariableSizedWrapGrid,它不支持虚拟化。有一些尝试解决这个问题,比如 this但不是原生/测试/广泛使用的解决方案
  • 不确定即使使用 VariableSizedWrapGrid 也可以支持间隙和缺少内容,看起来 GridView 在任何情况下都会填充间隙中的元素(创建空透明项目听起来像是肮脏的黑客)
  • 许多项目将成为问题,需要以某种方式进行增量加载
  • 内存使用/性能看起来不错

  • 有人实现了吗?是否有任何组件/指南?哪个 xaml 控件将允许此操作以及性能/内存/时间如何出现?

    最佳答案

    我为 UWP 做了一个 xaml 的 EPG不久前,经过大量 POC,我使用了一个简单的 Grid 和 ScrollViewer哪些列和行是从后面的代码动态生成的(大部分代码都在后面的代码上)和几个 ListView .

    我们还编写了自己的数据虚拟化(因为 Grid 不支持虚拟化)......

    WinRT XAML 工具包 - 非常方便

    这不是一项简单的任务,但它是耐用的:)

    假设您有一些 EPG 数据模型,例如 -
    列表(每个 channel 都有一个节目列表)

    我所做的是 -
    我创建了一个包含在 ScrollViewer 中的空网格,然后我为每个 channel 关联了一个 RowDefinition,然后将其添加到网格中(按 channel 索引)。

    传播节目 - 更复杂(因为一些程序有时间重叠)。我将每个程序作为边框元素添加到 channel RowDefinitios - 将其放置在 时间 margin 计算。

    数据虚拟化 - 我所做的是计算用户可见的时间段(矩形类型的视口(viewport)),然后,当用户滚动时 - 我只加载了与视口(viewport)相交的程序/ channel 。例如,如果用户从 14:00-18:00 观看 EPg,我不会将 18:05 的节目加载到 View 中。

    选择程序(详情展开) - 您可以在选择时简单地设置所选程序的宽度及其行定义。

  • 这里的主要问题是键盘导航(这真的很难实现)但是如果你面向触摸/鼠标,那么你的导航问题就解决了。
  • 关于wpf - 电子节目指南 (EPG) XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27691444/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com