Показывать всплывающее окно после анимации скольжения поворота

#windows-phone-8 #windows-phone-8.1

#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;
    }
}
  

Как я могу это сделать?

Комментарии:

1. Это WP8 или WP8.1? Silverlight или WinRT?

2. Вряд ли это и WP8, и WinRT.

3. каким было бы решение для WP8?

Ответ №1:

Во время выполнения WP8.1 вы можете сделать это, например, так:

Создайте расширение элемента управления Pivot, которое будет отображать его средство просмотра прокрутки:

 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. спасибо, я попробую … я использовал таймер для запуска всплывающего окна.

Ответ №2:

Я не знаю, является ли это эффективным способом сделать это, но я использовал таймер для запуска всплывающего окна после анимации прокрутки поворота.

 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;
    }
}