かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Windows 8.1のストアアプリで予定を追加しようとしたけれど

AppointmentManagerというクラスを使うと簡単に予定を追加できそうな様子を醸し出しています。

AppointmentManager class

使い方は簡単。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月には、カレンダーアプリが正式対応してるとうれしいなぁ。

f:id:okazuki:20130911221245p:plain