かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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