2013-10-08 36 views
0

我在我的PivotItems中加载了一些测验问题。WP8 - 在离开Pivotitem之前显示MessageBox

我的问题是,当用户在这个PivotItem,如果刷卡到另一个PivotItem我想离开这个PivotItem到另一个,询问用户是否真的要完成测验之前得到弹出MessagePrompt。我尝试了LostFocus事件和Unloaded事件,但没有发生。

我该如何管理?

P.S.我知道测验应该在另一个页面中,但我想用pivotItems来实现。

+0

您好,你知道关键项目的数量吗?会动态变化,还是常量? – Noorul

+0

那么开始/停止按钮怎么样+ yourPivot.IsLocked = true/false? –

回答

0

稍微凌乱的方法是保留当前选定的数据透视索引状态,并使用Windows手机控件工具包订阅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; 
      } 
     } 
    } 
+0

我试过这个,它和为指定的pivotItem注册的LostFocus事件具有相同的行为。虽然它触发了事件,但在背景中,如果单击MessageBoxResult.OK,则pivot已经更改并且不能返回到相同的数据透视表。 –

1

无论何时更改PivotItem,您都可以订阅SelectionChanged事件。查看MSDN链接中的一些示例。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.controls.pivot.selectionchanged(v=vs.105).aspx

我还没有尝试过这一点,但我相信,当弹出发生PivotItem仍将甚至改变。因此,一旦出现弹出窗口,并且让用户选择继续使用当前Pivot还是转到下一个窗口,则可能需要将PivotItem以编程方式更改回测验Pivot。

+0

仍然相同。弹出窗口发生,但PivotItem已经更改,并且在后台加载来自下一个PivotItem的内容,尽管MessageBox弹出窗口发生。我想继续使用当前的PivotItem,而不是在用户选择之前更改。 –

+0

必须有一种方法来重写滑动事件。如果你能找到,那么你就可以停止加载下一个数据透视表。我知道一些其他评论员说,尝试类似的修复。但如果你找到了解决方案,那么看看你如何解决这个问题会很有趣。 – WiteCastle

2

订阅枢轴SelectionChanged事件

Pivot_SelectionChanged Event 
{ 
if(Pivot.selectedindex==1|| 3|| 4) 
{ 
Messagebox(); 
} 
} 

假设2是你的支点项指标。

现在,如果用户选择“是”,然后指定pivotin selectedindex为2