0

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

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

我该如何管理?

PS我知道测验应该在另一个页面中,但我想用pivotItems来实现这一点。

4

3 回答 3

2

订阅枢轴 selectionChanged 事件

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

假设 2 是您的数据透视项目索引。

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

于 2013-10-10T13:40:13.953 回答
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。

于 2013-10-09T12:07:37.167 回答
0

一个稍微混乱的方法是保留当前选定的 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;
            }
        }
    }
于 2013-10-09T09:16:05.647 回答