WP8 - 在离开Pivotitem之前显示MessageBox

时间:2013-10-08 23:03:51

标签: c# windows-phone-7 windows-phone-8 pivot

我在 PivotItems 中加载了一些测验问题。

我的问题是,当用户在此PivotItem中并且如果滑动转到另一个PivotItem,我想在将此PivotItem留给另一个之前弹出 MessagePrompt ,询问用户是否真的想要完成测验。我尝试了LostFocus事件和Unloaded事件,但是没有发生。

我该如何管理?

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

3 个答案:

答案 0 :(得分:2)

订阅pivotots selectionChanged事件

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

假设2是你的枢轴物品索引。

现在,如果用户选择“是”,则将pivotots selectedindex分配给2

答案 1 :(得分:1)

只要更改了PivotItem,您就可以订阅SelectionChanged事件。查看链接以获取MSDN中的一些示例。

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

我还没有尝试过,但我相信即使出现弹出窗口,PivotItem仍会改变。因此,一旦您获得弹出窗口并且您允许用户选择保留当前的Pivot或转到下一个Pivot,您可能必须以编程方式将PivotItem更改回测验Pivot。

答案 2 :(得分:0)

稍微混乱的方法是保留当前选定的数据透视索引状态,并使用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;
            }
        }
    }