我在我的一个PivotItems中加载了一些测验问题。
我的问题是当用户在这个 PivotItem 中并且如果滑动到另一个 PivotItem 我想在离开这个 PivotItem 到另一个之前弹出MessagePrompt,询问用户是否真的想要完成测验。我尝试了 LostFocus 事件和 Unloaded 事件,但没有发生。
我该如何管理?
PS我知道测验应该在另一个页面中,但我想用pivotItems来实现这一点。
我在我的一个PivotItems中加载了一些测验问题。
我的问题是当用户在这个 PivotItem 中并且如果滑动到另一个 PivotItem 我想在离开这个 PivotItem 到另一个之前弹出MessagePrompt,询问用户是否真的想要完成测验。我尝试了 LostFocus 事件和 Unloaded 事件,但没有发生。
我该如何管理?
PS我知道测验应该在另一个页面中,但我想用pivotItems来实现这一点。
订阅枢轴 selectionChanged 事件
Pivot_SelectionChanged Event
{
if(Pivot.selectedindex==1|| 3|| 4)
{
Messagebox();
}
}
假设 2 是您的数据透视项目索引。
现在,如果用户选择“是”,则将枢轴 selectedindex 分配给 2
每当 PivotItem 更改时,您都可以订阅 SelectionChanged 事件。检查链接以获取 MSDN 中的一些示例。
我还没有尝试过,但我相信即使出现弹出窗口,PivotItem 仍然会发生变化。因此,一旦您获得弹出窗口并让用户选择留在当前 Pivot 或转到下一个 Pivot,您可能必须以编程方式将 PivotItem 更改回测验 Pivot。
一个稍微混乱的方法是保留当前选定的 Pivot Index 状态,并使用 windows phone 控件工具包订阅 DragStartedGestureEventArgs。
<controls:Pivot x:Name="pivotControl" Title="MY APPLICATION">
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener DragStarted="SelectedPivotChanging"></toolkit:GestureListener>
</toolkit:GestureService.GestureListener>
<controls:PivotItem Header="item1">
<Grid />
</controls:PivotItem>
<controls:PivotItem Header="item2">
<Grid/>
</controls:PivotItem>
</controls:Pivot>
private void SelectedPivotChanging(object sender, DragStartedGestureEventArgs e)
{
if (pivotControl.SelectedIndex == 0)
{
if (MessageBox.Show("Are you sure you wish to navigate away?", "Un-Answered questions", MessageBoxButton.OKCancel)
== MessageBoxResult.Cancel)
{
//pivotControl.SelectedIndex = previousIndex;
}
}
}