2014-12-29 28 views
4

使用XAML for WinPhone/WinRT有没有办法实现EPG?我看到很多iOS/Android/Web应用程序在这样做,但不是WP或WinStore。电子节目指南(EPG)XAML

  1. 它应支持大量物品(500个信道,对于每个N个节目,其中N是周期间的方案号)
  2. 它可以有空隙的内部,像一些程序是丢失或没有从整个数据行,但仍应显示空的(透明)行。
  3. 每行中的项目数量将总是不同(EPG如何工作)
  4. 加载速度应该很快,并且滚动平滑。
  5. 内存使用量应该是正常的,应用程序应该不会崩溃becasue的许多绘制的观点,即元素需要进行虚拟化(重复使用)

的GridView看起来类似的东西,但也存在一些问题:

  • 使项目的项目大小不同 - 需要将项目面板切换到不支持虚拟化的VariableSizedWrapGrid。有一些尝试解决这个问题,如this,但不是本地/测试/广泛使用的解决方案
  • 不确定即使使用VariableSizedWrapGrid它将有可能支持缺口和缺乏内容,看起来像GridView将填充间隙中的元素在任何情况下(创建空的透明物品听起来像肮脏的黑客)
  • 许多项目将是问题,需要以某种方式做增量装载
  • 内存使用

是否有人实现这一/性能desnt看起来不错?是否有任何组件/指南?哪种xaml控制可以实现这一点,以及如何显示性能/内存/时间?

+1

你有工作吗? –

回答

0

不久前,我做了一个xaml epg,在很多POCs之后,我用了一个简单的Grid与ScrollViewer,其中的行和列是从后面的代码动态生成的(大部分代码都在代码中后面)和一对ListView

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

的WinRT XAML工具箱 - 是非常方便的

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

假设你有EPG数据的一些模型,像 - 列表(每个通道有程序的列表)

我所做的,是 - 我创建了一个包含在ScrollViewer内部的空Grid,然后我为每个通道关联了一个RowDefinition,然后添加到了Grid(按通道索引)。

传播程序 - 更复杂(因为一些程序有时间重叠)。我将每个程序添加为通道RowDefinitios的Border元素 - 将它的边距设置为保证金到时间的计算。我做的是计算用户可见的时间段(一个Rect类型的ViewPort),然后当用户滚动时 - 我只加载了与用户滚动相关的节目/频道视口。例如,如果用户从14:00-18:00查看EPG,我不会将18:05程序加载到视图。

选择一个程序(详细扩展) - 当您选择时,您可以简单地设置所选程序的宽度及其RowDefinition。

  • 的主要问题是这里的键盘novigation(这是贯彻落实非常艰难的事情),但如果你触摸/鼠标面向那么你的导航问题就解决了。
+0

你能分享一些代码吗? –

+0

我不能,但我会尽力解释主要想法 –