2011-03-29 90 views
3

我在执行动态数据透视控制时遇到了问题。 我想要做的是使用数据透视图创建一个图库,在这里你可以通过滑动来改变图像。 这与透视控制通过在我的可观察集合上绑定其itemsource以在每个pivotitem上显示一个图像本地结合使用。 问题是,当我的图库包含超过10张图片时,此解决方案会占用大量内存,因为它会创建相同数量的pivotitems。WP7动态数据透视表

我试过被初始化我收藏有3项,当前显示的一个,前一个和下一个,当用户刷卡,我更新了我的名单。 我试过这个使用“SelectionChanged”事件,也与手势监听器..迄今没有成功。 有没有人试过这样做?如果是的话,我该如何执行它?

回答

2

我做了类似的事情,但不使用Pivot控件。下载Silverlight工具包(http://silverlight.codeplex.com/)并使用GestureListener赶刷卡动作:

<toolkit:GestureService.GestureListener> 
     <toolkit:GestureListener DragCompleted="OnDrag"/> 
</toolkit:GestureService.GestureListener> 

然后在代码中,你有一个事件处理程序,捕获刷卡事件,并更新相应的图像。下面是我用它来改变我的网页事件处理程序:

private void OnDrag(object sender, DragCompletedGestureEventArgs e) 
{ 
    if (e.Direction == System.Windows.Controls.Orientation.Horizontal) 
    { 
     if (e.HorizontalChange < 0) 
     { 
      TurnPagesForward(1); 
     } 
     else 
     { 
      TurnPagesBackward(1); 
     } 
    } 
} 
+0

谢谢。我调整它添加一个动画,以便像分页效果。它像一个魅力! – AlexMok 2011-03-29 15:43:41

+0

太棒了!你介意发布你的动画吗?我很想看看它是如何工作的,并可能在我的代码中使用类似的东西。 – johnhforrest 2011-03-30 13:56:07

+0

你好,我面临着完全相同的问题。如果你能分享动画的代码,会喜欢它吗? – 2012-01-21 19:14:00

1

如果你更新你的列表中的项目的结合将会丢失,所以这将可能不能很好地工作。

  • 什么可能的工作是以下(但我没有测试过):
  • 开始与五个项目的初始集合。
  • 确保您在列表中显示的第三个项目,使可见性项目在列表的中间。
  • 更改可见页面时引发SelectionChanged事件。
  • 如果您向右移动,则所选索引将更改为第四个元素。在这种情况下,您将删除列表中的第一个元素并添加一个新的第五个元素。
  • 如果移动到左侧,则做相反的操作并删除列表中的最后一个元素。

这应确保您始终可以前后移动,而不会移除或添加任何可见物品。

我不确定这是否可行,但值得一试。 :-)

+0

谢谢你的建议,我给它一个尝试,让你知道 – AlexMok 2011-03-29 12:19:33

+0

“确保你的列表,以便显示第三项可见项目位于列表中间。“我停在那里,作为数据透视表中的已知错误,不允许将选定的索引设置为第三个元素:http://senovasolutions.com/blog/2010/11/05/WP7PivotControlSelectedIndexBug.aspx – AlexMok 2011-03-29 12:36:34

0

不要这样做。很多人都尝试过,并没有扩展到大量的图像。

虽然如果可以使用透视控制来创建简单的图像导航控件,那将是非常不错的,但这并不实际。你需要用不同的方法去完成这个更复杂的过程。 (很多人尝试过不同的方式,请选择最适合您的需求/体验/偏好的内容)

+0

好吧..我仍然感到惊讶的是,他们没有想到一个组件在不增加内存消耗的情况下轻松实现这一点。否则,我认为可能是一个简单的页面,处理手势事件可以做到这一点。我只需要应用故事板来模拟滑动效果。 – AlexMok 2011-03-29 12:09:04

+0

@Alexbdx是的,这是一个耻辱。也许我们会在某天得到一些东西 – 2011-03-29 14:36:39