AppointmentManagerというクラスを使うと簡単に予定を追加できそうな様子を醸し出しています。
使い方は簡単。Appointmentクラスに情報をつっこんでShowAddAppointmentAsyncメソッドを呼ぶだけ。コードとしては以下のような感じ。
var appo = new Appointment { StartTime = DateTimeOffset.Now, AllDay = true, Subject = "テスト用予定" }; // ShowAddAppointmentAsyncで表示されるUIの参考として、この操作をしたきっかけの// コントロールの矩形を渡してやる必要があるみたいなので取得する var element = (FrameworkElement) sender; var t = element.TransformToVisual(null); var rect = t.TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight)); var appointmentId = await AppointmentManager.ShowAddAppointmentAsync( appo, rect, Placement.Default); // 戻り値は、登録したAppointmentを識別するためのID var dlg = new MessageDialog(appointmentId); await dlg.ShowAsync();
ShowAddAppointmentAsyncの戻り値は、あとでAppointmentを更新したり消したりするときに使うIDらしいので、大事にとっとく必要があります。
ただ2013/09/11現在では、このAppointmentManager.ShowAddAppoitmentAsyncを読んだときに処理を引き取ってくれるAppointmentProviderがいないみたいなので、以下のような悲しい結果になります。正式リリースの10月には、カレンダーアプリが正式対応してるとうれしいなぁ。