2016-12-14 71 views
0

我想從Extended.xaml屏幕導航到另一個屏幕Main.xaml。 但問題是,頁面卡在那裏不導航到另一個頁面。如何實現這一目標?任何幫助,將不勝感激。試圖導航從擴展閃屏到uwp中的另一個屏幕

XAML代碼:

<Grid x:Name="lcol"> 
    <Grid.Background> 
     <ImageBrush Stretch="Fill" 
        ImageSource="ms-appx:///Assets/Home/home_android.jpg" /> 
    </Grid.Background> 
    <RelativePanel Grid.Row="0"> 
    <Image x:Name="extendedSplashImage" Source="/Assets/Home/home_android.jpg"      
      Stretch="Uniform" Height="385" Width="690" 
      RelativePanel.AlignHorizontalCenterWithPanel="True" 
      RelativePanel.AlignLeftWithPanel="True" 
      RelativePanel.AlignRightWithPanel="True"/> 
    </RelativePanel> 
</Grid> 

銫代碼:

public sealed partial class ExtendedSplash : Page 
{ 
    internal Rect splashImageRect; // Rect to store splash screen image coordinates. 
    private SplashScreen splash; // Variable to hold the splash screen object. 
    internal bool dismissed = false; // Variable to track splash screen dismissal status. 
    internal Frame rootFrame; 

    public ExtendedSplash(SplashScreen splashscreen, bool loadState) 
    { 
     InitializeComponent() 
     try 
     { 
      var bounds = ApplicationView.GetForCurrentView().VisibleBounds; 
     } 
     catch (Exception ex) 
     { 
      Log.print(ex.StackTrace); 
     } 
     // Listen for window resize events to reposition the extended splash screen image accordingly. 
     // This is important to ensure that the extended splash screen is formatted properly in response to snapping, unsnapping, rotation, etc... 
     // Window.Current.SizeChanged += new WindowSizeChangedEventHandler(ExtendedSplash_OnResize); 

     splash = splashscreen; 

     if (splash != null) 
     { 
      // Register an event handler to be executed when the splash screen has been dismissed. 
      splash.Dismissed += new TypedEventHandler<SplashScreen, Object>(DismissedEventHandler); 
      // Create a Frame to act as the navigation context 
      rootFrame = new Frame(); 
      DismissExtendedSplash(); 
     } 
    } 
    void PositionImage() 
    { 
     extendedSplashImage.SetValue(Canvas.LeftProperty, splashImageRect.X); 
     extendedSplashImage.SetValue(Canvas.TopProperty, splashImageRect.Y); 
     extendedSplashImage.Height = splashImageRect.Height; 
     extendedSplashImage.Width = splashImageRect.Width; 

    } 
    void ExtendedSplash_OnResize(Object sender, WindowSizeChangedEventArgs e) 
    { 
     // Safely update the extended splash screen image coordinates. This function will be fired in response to snapping, unsnapping, rotation, etc... 
     if (splash != null) 
     { 
      // Update the coordinates of the splash screen image. 
      splashImageRect = splash.ImageLocation; 
      PositionImage(); 
     } 
    } 
    // Include code to be executed when the system has transitioned from the splash screen to the extended splash screen (application's first view). 
    void DismissedEventHandler(SplashScreen sender, object e) 
    { 
     dismissed = true; 
     // Complete app setup operations here... 
    } 
    private void DismissExtendedSplash() 
    { 
     rootFrame.Navigate(typeof(MainPage)); 
     // Place the frame in the current Window 
     Window.Current.Content = rootFrame; 
    } 
} 

回答

0

您可以顯示App.xaml.cs.的更多細節。我想你的代碼寫成正式簡單的這樣

protected override void OnLaunched(LaunchActivatedEventArgs e) 
{ 
    if (e.PreviousExecutionState != ApplicationExecutionState.Running) 
    { 
     bool loadState = (e.PreviousExecutionState == ApplicationExecutionState.Terminated); 
     ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen, loadState); 
     Window.Current.Content = extendedSplash; 
    } 

    Window.Current.Activate(); 
} 

你ExtendedSplash代碼:

public ExtendedSplash(SplashScreen splashscreen, bool loadState) 
{ 
    InitializeComponent() 
    try 
    { 
     var bounds = ApplicationView.GetForCurrentView().VisibleBounds; 
    } 
    catch (Exception ex) 
    { 
     Log.print(ex.StackTrace); 
    } 

    splash = splashscreen; 

    if (splash != null) 
    { 
     // Register an event handler to be executed when the splash screen has been dismissed. 
     splash.Dismissed += new TypedEventHandler<SplashScreen, Object>(DismissedEventHandler); 
     // Create a Frame to act as the navigation context 
     rootFrame = new Frame(); 
     DismissExtendedSplash(); 
    } 
} 

您完成初始化extendedSplash之前執行的方法DismissExtendedSplash()。因此Window.Current.Conten是MainPage,然後您執行Window.Current.Content = extendedSplash,將MainPage替換爲extendedSplash

相關問題