WP7动态枢轴

时间:2011-03-29 10:34:36

标签: windows-phone-7

我在实施动态枢轴控制方面遇到了麻烦。 我想做的是使用枢轴创建一个图像库,您可以通过滑动更改图像。 这通过在我的可观察集合上绑定它的itemsource以在每个pivotitem上显示一个图像,本身与枢轴控件一起工作。 问题是,当我的图库包含10张以上的图片时,这个解决方案占用了大量内存,因为它创建了相同数量的pivotitems。

我尝试的是使用3个项目初始化我的集合,当前显示的项目,上一个和下一个项目,当用户滑动时,我更新了我的列表。 我尝试使用“SelectionChanged”事件以及手势监听器...到目前为止没有成功。 有没有人试过这样做?如果是,我该如何实施呢?

3 个答案:

答案 0 :(得分: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);
        }
    }
}

答案 1 :(得分:1)

如果您更新列表中的项目,您的绑定将会丢失,因此这可能不会很好。

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

这应该确保您可以在不移除或添加任何可见项目的情况下来回移动。

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

答案 2 :(得分:0)

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

虽然如果可以使用枢轴控件来创建简单的图像导航控件真的很好,但这是不切实际的。您需要使用不同的方法自行完成更复杂的路径。 (许多人尝试过不同的方式。根据您的需求/经验/偏好选择最佳方式。)