简体   繁体   English

尝试从扩展初始屏幕导航到uwp中的另一个屏幕

[英]Trying To navigate From Extended splash screen to another screen in uwp

I'm trying to navigate from Extended.xaml screen to another screen Main.xaml. 我正在尝试从Extended.xaml屏幕导航到另一个屏幕Main.xaml。 But issue is that the page is stuck there not navigating to another page. 但是问题是该页面停留在该页面上,无法导航到另一个页面。 How to achieve that? 如何实现呢? Any help would be appreciated. 任何帮助,将不胜感激。

Xaml code: 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>

Cs code: CS代码:

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

You can show more detail of App.xaml.cs. 您可以显示App.xaml.cs的更多详细信息。 I suppose your code is written as the official simple like this 我想你的代码是这样写的

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

Your ExtendedSplash code : 您的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();
    }
}

You executed method DismissExtendedSplash() before finished initialization extendedSplash. 您在完成初始化ExtendedSplash之前执行了方法DismissExtendedSplash() So Window.Current.Conten is MainPage, and then you excuted Window.Current.Content = extendedSplash ,The MainPage is replaced with extendedSplash . 因此, Window.Current.Conten是MainPage,然后您对Window.Current.Content = extendedSplash ,将MainPage替换为extendedSplash

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM