Windows Phone闹钟不断地重新打开
本文关键字:新打开 Phone 闹钟 Windows | 更新日期: 2023-09-27 17:59:27
我正在尝试为Windows Phone编写一个闹钟应用程序,该应用程序要求用户在闹钟响起时解决数学问题。现在我被卡住了,我有一个包含打开警报设置的主页,当警报响起时,用户会被重定向到另一个xaml页面,该页面要求用户输入随机生成的数学问题的答案才能关闭警报。我的问题是,一旦用户解决了问题并点击复选框,应用程序应该首先将alarmSet值设置为false,然后将用户重定向回主页:
private void Solve_Click(object sender, EventArgs e)
{
this.userSolve = Convert.ToInt32(answerInput.Text);
if (userSolve != answer)
{
MessageBox.Show("Incorrect");
//userAnswerInt = Convert.ToInt32(answerInput.Text);
}
else if (userSolve == answer)
{
MainPage.alarmSet.Value = false;
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
}
然后,当用户到达主页时,OnLoaded方法应该停止警报声并将一切重置为正常:
public async void OnLoaded(object sender, EventArgs e)
{
this.timer.Stop();
this.alarmSound.Stop();
alarmSet.Value = false;
this.notificationSwitch.IsChecked = alarmSet.Value;
this.timePicker.Value = new DateTime(1, 1, 1,
alarmTime.Value.Hours,
alarmTime.Value.Minutes,
0
);
if (alarmSet.Value == true)
this.alarmTimeText.Text = alarmTimeString;
else if (alarmSet.Value == false)
this.alarmTimeText.Text = "alarm off";
但问题是,每次用户解决数学问题时,他们都会被带回主页面,并立即重定向回闹钟铃声页面,因为闹钟仍然处于打开状态。这会产生一个无限循环的相互重叠的闹钟,我不知道为什么,即使我在导航回主页面之前将alarmSet.Value设置为false,警报仍然亮着……我还有什么需要做的吗?如何打开闹钟并将其设置为时钟所在的当前分钟,而不会立即响起?
我在Windows Phone的应用程序生命周期中没有看到"OnLoaded"事件。
参考:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008(v=vs.105).aspx
您可以执行以下操作:
-
在Mainpage.xaml中,查看警报是否正在运行,如果警报设置为true,则将用户重定向到onNavigatedTo Event下的下一页。
-
在下一页中,将alarmSet设置为false,并将用户重定向到MainPage.xaml。onNavigatedTo将再次启动,但由于alarmSet为false,用户将不会重定向到任何位置。您可以在此处执行停止报警或其他任何操作。