Получение содержимого календаря в приложении Windows Phone 8

Windows Phone 8 SDK позволяет сторонним программам получить доступ к содержимому календаря на устройстве. Это может быть полезным при создании приложений-планировщиков или приложений, чья логика зависит от содержимого календаря.

Для получения доступа к календарю необходимо установить соответствующее разрешение – ID_CAP_APPOINTMENTS.

Для получения доступа к содержимому календаря используется объект Appointments. Аналогично тому, как выбираются данные из списка контактов, для получения содержимого календаря нужно сформировать поисковый запрос. Поисковой запрос содержит промежуток времени за который нужно выбрать записи. Кроме того, можно указать максимальное число записей, которые могут быть получены и учетную запись, в которой эти записи хранятся. Для выполнения поискового запроса необходимо выполнить метод SearchAsync. Когда будет получен результат, операционная система сгенерирует событие SearchCompleted. Таким образом, код по получению данных из календаря за последние две недели будет выглядеть так:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  Appointments calendar = new Appointments();
  calendar.SearchCompleted += calendar_SearchCompleted;
  calendar.SearchAsync(DateTime.Now.AddDays(-14), DateTime.Now, null);

  base.OnNavigatedTo(e);
}

void calendar_SearchCompleted(object sender, AppointmentsSearchEventArgs e)
{
  AppointmentsList.ItemsSource = e.Results;
}

Добавим на страницу ListBox и определим для каждой записи календаря шаблон:

<ListBox x:Name="AppointmentsList">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Margin="0">
        <TextBlock Text="{Binding Subject}" Style="{StaticResource PhoneTextNormalStyle}" FontWeight="Bold" />
        <TextBlock Text="{Binding Details}" Style="{StaticResource PhoneTextNormalStyle}" />
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Этот код выберет из календаря все записи за последние две недели и отобразит их на странице.