Wpf 电子节目指南(EPG)XAML

Wpf 电子节目指南(EPG)XAML,wpf,xaml,windows-phone-7,windows-phone-8,windows-runtime,Wpf,Xaml,Windows Phone 7,Windows Phone 8,Windows Runtime,是否有一种使用XAML实现WinPhone/WinRT的方法?我看到很多iOS/Android/Web应用程序都在这样做,但WP或WinStore却没有 它应该支持大量项目(500个频道,每个频道有N个节目,其中N是一周内的节目数) 它内部可能有间隙,比如某些程序丢失或整行没有数据,但仍应显示空(透明)行 每行中的项目数总是不同的(这就是EPG的工作原理) 加载应快速且滚动平稳 内存使用应正常,应用程序不应崩溃,因为许多绘制视图ie元素需要虚拟化(重用) GridView看起来类似,但存在一些问

是否有一种使用XAML实现WinPhone/WinRT的方法?我看到很多iOS/Android/Web应用程序都在这样做,但WP或WinStore却没有

  • 它应该支持大量项目(500个频道,每个频道有N个节目,其中N是一周内的节目数)
  • 它内部可能有间隙,比如某些程序丢失或整行没有数据,但仍应显示空(透明)行
  • 每行中的项目数总是不同的(这就是EPG的工作原理)
  • 加载应快速且滚动平稳
  • 内存使用应正常,应用程序不应崩溃,因为许多绘制视图ie元素需要虚拟化(重用)
  • GridView看起来类似,但存在一些问题:

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

    有人实施了这个吗?是否有相关的组件/指南?哪个xaml控件允许这样做,性能/内存/时间如何?

    不久前我为
    UWP
    做了一个xaml epg,在做了很多POC之后,我使用了一个带有
    ScrollViewer
    的简单网格,哪些列和行是从代码隐藏中动态生成的(大部分代码都在代码隐藏中)还有几个
    列表视图

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

    WinRT XAML工具包-非常方便

    这不是一项简单的任务,但它是可以完成的:)

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

    我所做的是- 我在ScrollViewer内部创建了一个空网格,然后为每个通道关联了一个行定义,然后将is添加到网格中(通过通道索引)

    传播节目-更为复杂(因为有些节目有时间重叠)。我将每个程序作为边界元素添加到通道行定义中-将其按边距放置到时间计算中

    数据虚拟化-我所做的是计算用户可见的时间段(Rect类型的视口),然后,当用户滚动时-我只加载与视口相交的程序/通道。例如,如果用户在14:00-18:00查看EPg,我不会将18:05程序加载到视图中

    选择程序(展开以获取详细信息)选择时,您只需设置所选程序的宽度及其行定义

    • 这里的主要问题是键盘更新(这是一件很难实现的事情),但是如果你以触摸/鼠标为导向,那么你的导航问题就解决了

    你的工作正常了吗?我不能,但我会尽力解释主要思想