c# - Windows Phone 闹钟不断自行重新开启

标签 c# windows-phone-8 windows-phone alarm

我正在尝试为 Windows Phone 编写闹钟应用程序,要求用户在闹钟响起时解决数学问题。现在我被卡住了,我有 MainPage 包含打开警报的设置,当警报响起时,用户被重定向到另一个 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

您可以执行以下操作:

  1. 在 Mainpage.xaml 中,查看警报是否正在运行,如果 alarmSet 为真,则将用户重定向到 onNavigatedTo 事件下的下一页。

  2. 在下一页中,将 alarmSet 设置为 false 并将用户重定向到 MainPage.xaml。 onNavigatedTo 将再次被触发,但是,由于 alarmSet 为 false,用户不会被重定向到任何地方。您可以在此处执行停止警报或其他任何其他情况。

关于c# - Windows Phone 闹钟不断自行重新开启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209842/

相关文章:

c# - 从 Task.Run 获取返回值

emulation - WP8 模拟器屏幕尺寸

javascript - 无法在 Windows 8 平板电脑中上传文件

c# - Windows Phone - 使页面可滚动

windows-phone-8 - Windows Phone 8 中的快速应用程序恢复问题

c# - WebClient.DownloadFileAsync - 一次下载一个文件

java - Android 工具栏中的内容编辑

c# - WPF 的最佳实践 - 每个 GUI 元素都需要绑定(bind)吗?

cordova - jquery mobile位置固定在Windows Phone 8和视口(viewport)高度

visual-studio-2010 - 是否可以在 VS 2010 或 VS 2012 中使用 Windows Phone 6 SDK?