繁体   English   中英

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

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

我正在尝试从Extended.xaml屏幕导航到另一个屏幕Main.xaml。 但是问题是该页面停留在该页面上,无法导航到另一个页面。 如何实现呢? 任何帮助,将不胜感激。

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代码:

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

您可以显示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

暂无
暂无

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

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