[英]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.