我在我的PivotItems中加载了一些测验问题。WP8 - 在离开Pivotitem之前显示MessageBox
我的问题是,当用户在这个PivotItem,如果刷卡到另一个PivotItem我想离开这个PivotItem到另一个,询问用户是否真的要完成测验之前得到弹出MessagePrompt。我尝试了LostFocus事件和Unloaded事件,但没有发生。
我该如何管理?
P.S.我知道测验应该在另一个页面中,但我想用pivotItems来实现。
我在我的PivotItems中加载了一些测验问题。WP8 - 在离开Pivotitem之前显示MessageBox
我的问题是,当用户在这个PivotItem,如果刷卡到另一个PivotItem我想离开这个PivotItem到另一个,询问用户是否真的要完成测验之前得到弹出MessagePrompt。我尝试了LostFocus事件和Unloaded事件,但没有发生。
我该如何管理?
P.S.我知道测验应该在另一个页面中,但我想用pivotItems来实现。
稍微凌乱的方法是保留当前选定的数据透视索引状态,并使用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;
}
}
}
我试过这个,它和为指定的pivotItem注册的LostFocus事件具有相同的行为。虽然它触发了事件,但在背景中,如果单击MessageBoxResult.OK,则pivot已经更改并且不能返回到相同的数据透视表。 –
无论何时更改PivotItem,您都可以订阅SelectionChanged事件。查看MSDN链接中的一些示例。
我还没有尝试过这一点,但我相信,当弹出发生PivotItem仍将甚至改变。因此,一旦出现弹出窗口,并且让用户选择继续使用当前Pivot还是转到下一个窗口,则可能需要将PivotItem以编程方式更改回测验Pivot。
仍然相同。弹出窗口发生,但PivotItem已经更改,并且在后台加载来自下一个PivotItem的内容,尽管MessageBox弹出窗口发生。我想继续使用当前的PivotItem,而不是在用户选择之前更改。 –
必须有一种方法来重写滑动事件。如果你能找到,那么你就可以停止加载下一个数据透视表。我知道一些其他评论员说,尝试类似的修复。但如果你找到了解决方案,那么看看你如何解决这个问题会很有趣。 – WiteCastle
订阅枢轴SelectionChanged事件
Pivot_SelectionChanged Event
{
if(Pivot.selectedindex==1|| 3|| 4)
{
Messagebox();
}
}
假设2是你的支点项指标。
现在,如果用户选择“是”,然后指定pivotin selectedindex为2
您好,你知道关键项目的数量吗?会动态变化,还是常量? – Noorul
那么开始/停止按钮怎么样+ yourPivot.IsLocked = true/false? –