我想在用戶導航到應用程序中的某個頁面時以及從某個頁面導航時製作簡單的動畫。以下是我對現在:Storyboard.Completed和OnNavigatingFrom。如何正確地做動畫?
XAML:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.Projection>
<PlaneProjection CenterOfRotationY="1"/>
</Grid.Projection>
<Grid.Resources>
<Storyboard x:Name="OnNavTo">
<DoubleAnimation
Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(Projection).(PlaneProjection.RotationX)"
From="-110" To="0" Duration="0:0:0.3" />
</Storyboard>
<Storyboard x:Name="OnNavFrom">
<DoubleAnimation
Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(Projection).(PlaneProjection.RotationX)"
From="0" To="-110" Duration="0:0:1.3" />
</Storyboard>
</Grid.Resources>
<phone:Pivot Title="{Binding LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}">
<!-- My page stuff here -->
</phone:Pivot>
</Grid>
C#:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
OnNavTo.Begin();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
OnNavFrom.Begin();
}
的OnNavigatedTo工作正常。當我點擊按鈕打開適當的頁面時,它會打開動畫。但是,當我按下後退按鈕時,頁面就會關閉,不會有任何動畫。 請指點我正確的方向
(我是後端python開發人員,絕對noob在Windows Phone和.NET的東西)。
UPD 正如gaurav5430指出的那樣。
第一:我已經注意到,我使用的OnNavigatedFrom
代替OnNavigatingFrom
二:動畫是異步的,所以我需要等到它完成之前實際關閉頁面。在這一點上,我來到了以下情況:
XAML:<Storyboard x:Name="OnNavFrom" Completed="OnNavFrom_Completed">
C#:
private bool cancelExit = true;
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
e.Cancel = cancelExit;
if (cancelExit)
{
OnNavFrom.Begin();
}
else
{
base.OnNavigatingFrom(e);
}
}
private void OnNavFrom_Completed(object sender, EventArgs e)
{
cancelExit = false;
NavigationService.GoBack();
}
它的工作。雖然我明白這不是處理事件的最佳方式。我很確定C#有很好的方法來做到這一點,而不需要調用NavigationService
兩次(第一次當用戶按下後,第二次當動畫完成時)。 gaurav5430提供的鏈接包含代碼示例。但我不明白它是如何工作的。對於像我這樣的新手來說,我認爲這段代碼太小,無法理解幕後的情況。
所以
謝謝你指點我正確的方向和鏈接。我認爲你的回覆和鏈接包含處理該問題的所有信息。但我仍然不知道如何。我已經更新了我的問題。 – user3119288