在枢轴滑动动画后显示弹出窗口

时间:2014-06-28 20:47:00

标签: windows-phone-8 windows-phone-8.1

我想在枢轴滑动动画结束后显示一个弹出窗口。

现在,首先显示弹出警报,然后显示滑动动画。

到目前为止,这是我的代码:

private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    switch (MainPivot.SelectedIndex)
    {
        case 0:
            SelectHome();
            break;
        case 1:
            SelectTest(); 
            break;
        case 2:
            SelectStatus();
            Alert alert = new Alert();
            alert.Show();
            break;
        case 3:
            SelectAbout();
            break;
        default:
            break;
    }
}

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

在WP8.1 RunTime下你可以这样做:

创建 Pivot 控件的扩展名,以便公开其 ScrollViewer

namespace YourNamespace
{
  public class PivotEx : Pivot
  {
    public ScrollViewer exposedSV = null;

    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        exposedSV = this.GetTemplateChild("ScrollViewer") as ScrollViewer;
    }
  }

获得后,在XAML中定义数据透视:

<local:PivotEx x:Name="myPivot" xmlns:local="using:YOurNamespace">
// rest of code

然后就可以访问 ScrollViewer 并订阅其 ViewChanged 事件:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        this.Loaded += (sender, e) => myPivot.exposedSV.ViewChanged += pivotsScroll_ViewChanged;
    }

    private async void pivotsScroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        if (!e.IsIntermediate) await new MessageDialog("After scroll changed!").ShowAsync();
    }

答案 1 :(得分:0)

我不知道这是否是有效的方法,但是我使用了一个计时器来在滚动动画之后启动弹出窗口。

async Task showAlertWithDelay()
{
    await Task.Delay(1000);
    AlertMessage alert = new AlertMessage();
    alert.show();
}

private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    switch (MainPivot.SelectedIndex)
    {
        case 0:
            SelectHome();
            break;
        case 1:
            SelectTest(); 
            break;
        case 2:
            SelectStatus();
            showAlertWithDelay();
            break;
        case 3:
            SelectAbout();
            break;
        default:
            break;
    }
}