如何使用计时器导航到手机 SDK 8.1 (xaml c#) 中的其他页面
本文关键字:xaml 其他 导航 计时器 何使用 手机 SDK | 更新日期: 2023-09-27 18:36:28
我设法学习如何制作手机应用程序。我对 c# 和 xaml 完全陌生。但是我已经做了视觉基础到基础知识。
我正在尝试在 Windows Phone 中重新创建我的项目,并且在计时器中有基本的进度条,但是当计时器到达结束时,我希望它导航到我创建的新页面。我见过许多不同的例子,但没有一个帮助它要么不起作用,要么有错误。
这是主页上到目前为止的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using System.Windows.Threading;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using ProgramOSMobile.Resources;
namespace ProgramOSMobile
{
public partial class MainPage : PhoneApplicationPage
{
private DispatcherTimer timer;
private int i, j;
public MainPage()
{
InitializeComponent();
timer = new DispatcherTimer();
timer.Tick += timer_tick;
Init();
timer.Start();
}
private void Init()
{
j = i = Convert.ToInt32(3);
timer.Interval = TimeSpan.FromMilliseconds(i);
}
private void timer_tick(object sender, EventArgs e)
{
progressBar1.Value = i;
i = i + j;
if (i == 1010)
{
timer.Stop();
}
}
}
}
这一切都有效,但是当涉及到使用此代码时,例如:
NavigationService.Navigate(new Uri("/LoginScreen.xaml", UriKind.Relative));
或者实际上是手机8.1的这个新产品:
this.Frame.Navigate(typeof(LoginScreen));
我在"框架"部分收到错误。
很抱歉这个问题很长,但这真的让我感到困惑。
谢谢担
正如我所看到的,您正在使用Windows Phone 8.1 Silverlight项目,并且在WinRT版本中使用了您遇到的错误。这是计时器后导航的代码。
对于 WinRT protected override void OnNavigatedTo(NavigationEventArgs e) {
var timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(300) };
timer.Start();
timer.Tick += ((ax, by) =>
{
timer.Stop();
Loader.IsActive = false;
this.Frame.Navigate(typeof(HomePage));
});
}
以及您正在使用的 Silverlight 项目
public MainPage()
{
InitializeComponent();
Loaded+=MainPage_Loaded;
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var timer = new System.Windows.Threading.DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(2);
timer.Start();
timer.Tick += ((ax, by) => { timer.Stop();
NavigationService.Navigate(new Uri("/Source Code/Recieve.xaml", UriKind.RelativeOrAbsolute));
});
}
您正在使用 Init 方法初始化计时器,您可以根据需要修复我所做的或动态。如果抛出任何错误,请检查输出中的异常,这可能是因为下一页(即主页)上的 Xaml 错误。希望对您有所帮助。
以下代码对我有用..试试看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using System.Windows.Threading;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using ProgramOSMobile.Resources;
namespace ProgramOSMobile
{
public partial class MainPage : PhoneApplicationPage
{
DispatcherTimer timer = new DispatcherTimer();
int tick=0;
public MainPage()
{
InitializeComponent();
timer.Interval = TimeSpan.FromSeconds(0.5);
timer.Start();
timer.Tick += new EventHandler(splash);
}
private void splash(object sender, EventArgs e)
{
tick++;
if(tick==5){
NavigationService.Navigate(new Uri("/Menu.xaml", UriKind.Relative));
}
}
}
}
上面的代码的计时器间隔为 0.5 秒,时间刻度率为 1