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