Windows phone 7 防止Windows Phone中的透视导航

Windows phone 7 防止Windows Phone中的透视导航,windows-phone-7,pivot,Windows Phone 7,Pivot,我有一个用于Windows Phone的音频录制应用程序。它由一个轴控件和两个轴项目组成。一个用于记录控制,另一个用于回顾和聆听记录的项目 在录制过程中,我需要一种方法来防止用户离开当前的轴心项目,但要保持整个轴心项目移动,但不会翻转到下一个项目的感觉,就像没有一样 我知道我可以使用Silverlight Toolkit中的GestureListener,但使用它我需要自己实现枢轴运动的模拟 是否有一种内置方式来防止枢轴导航 如果没有,你能给我举一个例子,说明如何在手势翻转时设置控制运动的动画吗

我有一个用于Windows Phone的音频录制应用程序。它由一个轴控件和两个轴项目组成。一个用于记录控制,另一个用于回顾和聆听记录的项目

在录制过程中,我需要一种方法来防止用户离开当前的轴心项目,但要保持整个轴心项目移动,但不会翻转到下一个项目的感觉,就像没有一样

我知道我可以使用Silverlight Toolkit中的GestureListener,但使用它我需要自己实现枢轴运动的模拟

是否有一种内置方式来防止枢轴导航


如果没有,你能给我举一个例子,说明如何在手势翻转时设置控制运动的动画吗

用户必须留在一个
数据透视项上吗?
。如果没有,您可以禁用第二个数据透视项,以便用户知道它在那里,但实际上无法与它交互

secondPivotItem.IsEnabled = false;
或者,您可以在需要时动态插入第二个数据透视项,在不需要时将其删除。例如,录制时:

mainPivot.Items.Remove(secondPivotItem);
然后,当您希望显示第二个数据透视项时:

mainPivot.Items.Add(secondPivotItem);
唯一的“问题”是,当屏幕上只有一个数据透视项时,用户无法滚动。然而,这就是枢轴控件的工作原理


如果确实希望用户滚动回自身,可以创建一个空白的数据透视项(没有标题)。然后,处理Pivot的
加载PivotItem
事件。检查将要加载的项是否为空白项。如果是,则使用
Pivot.SelectedItem=recordingPivotItem
导航回正在录制的数据透视项。然后,您可以使用上述方法在录制结束时动态添加第二个数据透视项。这不是pivots的正常用户体验,但应该做您试图实现的事情。

将某人锁定到pivotitem或禁用某个pivotitem以使其无法导航的缺点是,您会让用户感到沮丧。PivotItems是用来来回切换的,编写一个行为与此不同的应用程序将从用户体验中消失,因为该应用程序的行为不会像他们期望的那样


就个人而言,如果要将它们锁定到一个pivot项中,我认为应该继续创建另一个没有pivot控件的页面并导航到它。此外,无论您是否选择这种方式,都需要记住,无论它们是锁定到某个数据透视项还是导航到另一个页面,后退按钮都必须按预期工作,或者该应用程序将无法通过认证。

在我看来,最好的解决方案是使pivot控件不可见,以完全命中测试。我只是简单地将PivotMain.ishitestvisible设置为false,并在录制完毕后将其设置回true

关于如何使特定元素命中测试可见,同时使整个全景或透视项目命中测试不可见,有一种很好的附加属性方法: 以下是一位作者的博客文章的链接,其中包含源代码:


在动态加载和删除带有textblock头的pivot项并将其添加到SDK的pivot控件之前,它对我有效

您能否在记录期间删除第二个数据透视项,然后重新插入它?或者只是在录制时更改其可见性?我将动态删除和添加第二个透视项。谢谢。由于某些原因,我在尝试删除透视项目时遇到“参数不正确”异常。我已经尝试了几种方法来索引我想要删除的项,但仍然得到了相同的异常。更新:我还发现这是一个已知的Pivot控件错误,因此如果Pivot项目的标题中有textblock,则不可能动态显示/隐藏Pivot项目。