-4

在我的应用程序中,我有一个闹钟,计划于今天 2013 年 6 月 25 日(BeginTime)开始,比当前时间晚几个小时。构建时出现错误“ Microsoft.Phone.ni.dll 中发生‘System.InvalidOperationException’类型的异常,但未在用户代码中处理”。但我将BeginTime更改为未来的任何一天,它运行良好。我遵循说明如何为 Windows Phone 创建警报和提醒。我怎样才能在今天创建一个带有星星时间的闹钟?

这是我的代码:XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ScrollViewer>
            <StackPanel Orientation="Vertical">
                <StackPanel Orientation="Horizontal">
                    <RadioButton Content="Reminder" Name="reminderRadioButton" GroupName="ReminderOrAlarm" IsChecked="True"></RadioButton>
                    <RadioButton Content="Alarm" Name="alarmRadioButton" GroupName="ReminderOrAlarm" ></RadioButton>
                </StackPanel>
                <TextBlock Height="30" HorizontalAlignment="Left"  Name="titleLabel" Text="title" VerticalAlignment="Top" />
                <TextBox Height="72" HorizontalAlignment="Left"  Name="titleTextBox" Text="" VerticalAlignment="Top" Width="460" MaxLength="63"/>
                <TextBlock Height="30" HorizontalAlignment="Left"  Name="contentLabel" Text="content" VerticalAlignment="Top" />
                <TextBox Height="160" HorizontalAlignment="Left"  Name="contentTextBox" Text="" VerticalAlignment="Top" Width="460" TextWrapping="Wrap" MaxLength="256" AcceptsReturn="True" />
                <TextBlock Height="30" HorizontalAlignment="Left"  Name="beginTimeLabel" Text="begin time" VerticalAlignment="Top" />
                <StackPanel Orientation="Horizontal">
                    <toolkit:DatePicker x:Name="beginDatePicker" Width="220" HorizontalAlignment="Left"></toolkit:DatePicker>
                    <toolkit:TimePicker x:Name="beginTimePicker"  Width="220" HorizontalAlignment="Right"></toolkit:TimePicker>
                </StackPanel>
                <TextBlock Height="30" HorizontalAlignment="Left"  Name="expirationTimeLabel" Text="expiration time" VerticalAlignment="Top" />
                <StackPanel Orientation="Horizontal">
                    <toolkit:DatePicker x:Name="expirationDatePicker" Width="220" HorizontalAlignment="Left"></toolkit:DatePicker>
                    <toolkit:TimePicker x:Name="expirationTimePicker" Width="220" HorizontalAlignment="Right"></toolkit:TimePicker>
                </StackPanel>
                <Grid>
                    <RadioButton Content="once" Height="72" HorizontalAlignment="Left" Margin="0,0,0,0" Name="onceRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval" IsChecked="True"/>
                    <RadioButton Content="weekly" Height="72" HorizontalAlignment="Left" Margin="0,70,0,0" Name="weeklyRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval"/>
                    <RadioButton Content="daily" Height="72" HorizontalAlignment="Left" Margin="0,140,0,0" Name="dailyRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval"/>
                    <RadioButton Content="monthly" Height="72" HorizontalAlignment="Left" Margin="240,0,0,0" Name="monthlyRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval"/>
                    <RadioButton Content="end of month" Height="72" HorizontalAlignment="Left" Margin="240,70,0,0" Name="endOfMonthRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval"/>
                    <RadioButton Content="yearly" Height="72" HorizontalAlignment="Left" Margin="240,140,0,0" Name="yearlyRadioButton" VerticalAlignment="Top" GroupName="ScheduleInterval"/>
                </Grid>
                <TextBlock Height="30" HorizontalAlignment="Left" Name="param1Label" Text="context parameter 1" VerticalAlignment="Top" />
                <TextBox Height="72" HorizontalAlignment="Left" Name="param1TextBox" Text="" VerticalAlignment="Top" Width="440" MaxLength="63"/>
                <TextBlock Height="30" HorizontalAlignment="Left" Name="param2Label" Text="context parameter 2" VerticalAlignment="Top" />
                <TextBox Height="72" HorizontalAlignment="Left" Name="param2TextBox" Text="" VerticalAlignment="Top" Width="440" MaxLength="63"/>

            </StackPanel>
        </ScrollViewer>
    </Grid>

和 C#:

private void ApplicationBarSaveButton_Click(object sender, EventArgs e)
    {
        String name = System.Guid.NewGuid().ToString();
        DateTime date = (DateTime)beginDatePicker.Value;
        DateTime time = (DateTime)beginTimePicker.Value;
        DateTime beginTime = date + time.TimeOfDay;
        if (beginTime < DateTime.Now)
        {
            MessageBox.Show("the begin date must be in the future.");
            return;
        }
        date = (DateTime)expirationDatePicker.Value;
        time = (DateTime)expirationTimePicker.Value;
        DateTime expirationTime = date + time.TimeOfDay;

        if (expirationTime < beginTime)
        {
            MessageBox.Show("expiration time must be after the begin time.");
            return;
        }
        RecurrenceInterval recurrence = RecurrenceInterval.None;
        if (dailyRadioButton.IsChecked == true)
        {
            recurrence = RecurrenceInterval.Daily;
        }
        else if (weeklyRadioButton.IsChecked == true)
        {
            recurrence = RecurrenceInterval.Weekly;
        }
        else if (monthlyRadioButton.IsChecked == true)
        {
            recurrence = RecurrenceInterval.Monthly;
        }
        else if (endOfMonthRadioButton.IsChecked == true)
        {
            recurrence = RecurrenceInterval.EndOfMonth;
        }
        else if (yearlyRadioButton.IsChecked == true)
        {
            recurrence = RecurrenceInterval.Yearly;
        }

        string param1Value = param1TextBox.Text;
        string param2Value = param2TextBox.Text;
        string queryString = "";
        if (param1Value != "" && param2Value != "")
        {
            queryString = "?param1=" + param1Value + "&param2=" + param2Value;
        }
        else if (param1Value != "" || param2Value != "")
        {
            queryString = (param1Value != null) ? "?param1=" + param1Value : "?param2=" + param2Value;
        }
        Uri navigationUri = new Uri("/ShowParams.xaml" + queryString, UriKind.Relative);
        if ((bool)reminderRadioButton.IsChecked)
        {
            Reminder reminder = new Reminder(name);
            reminder.Title = titleTextBox.Text;
            reminder.Content = contentTextBox.Text;
            reminder.BeginTime = beginTime;
            reminder.ExpirationTime = expirationTime;
            reminder.RecurrenceType = recurrence;
            reminder.NavigationUri = navigationUri;

            // Register the reminder with the system.
            ScheduledActionService.Add(reminder);
        }
        else
        {
            Alarm alarm = new Alarm(name);
            alarm.Content = contentTextBox.Text;
            alarm.Sound = new Uri("/Ringtones/Ring01.wma", UriKind.Relative);
            alarm.BeginTime = beginTime;
            alarm.ExpirationTime = expirationTime;
            alarm.RecurrenceType = recurrence;

            ScheduledActionService.Add(alarm);
        }
        // Navigate back to the main reminder list page.
        NavigationService.GoBack();

    }
4

1 回答 1

0

我复制了您的代码,没有任何改变,除了这一行外,它可以正常工作:

alarm.Sound = new Uri("/Ringtones/Ring01.wma", UriKind.Relative);

如果未删除该行(或文件已添加到手机),则每次添加警报时都会崩溃

只需将其注释掉,您的代码就应该可以工作。

于 2013-06-25T17:29:21.383 回答