Olá pessoal, tudo bom?
Segue uma dica rápida para que você possa, através de sua APP, consultar compromissos que estejam registrados na agenda do Windows Phone.
Para obter acesso aos agendamentos do usuário será necessário declarar o uso do namespace Microsoft.Phone.UserData, pois é através dele que passaremos a ter acesso à classe Appointments.
A classe Appointments, dentre outras coisas, nos permite reallizar consultas na agenda do Windows Phone e então exibir os compromissos registrados dentro de um determinado período de tempo.
Para nosso exemplo, estou declarando em XAML um DataTemplate que depois será associado a um ListBox. Esse conjunto será o responsável pela exibição dos dados na tela da APP.
<phone:PhoneApplicationPage x:Class="Infoeste2015.Calendario" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" shell:SystemTray.IsVisible="True"> <!-- DEFINIÇÃO DO DATATEMPLATE PARA EXIBIÇÃO DOS DADOS DA AGENDA. --> <phone:PhoneApplicationPage.Resources> <DataTemplate x:Key="AtividadesItemTemplate"> <StackPanel Margin="0,0,0,25"> <TextBlock FontWeight="Bold" Text="{Binding Subject}" Style="{StaticResource PhoneTextTitle2Style}" /> <TextBlock Text="{Binding Details}" TextWrapping="Wrap" FontWeight="Bold" Style="{StaticResource PhoneTextTitle3Style}" /> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding StartTime, StringFormat='{}{0:dd/MM/yyyy}'}" Style="{StaticResource PhoneTextTitle3Style}" /> <TextBlock Text="a" Style="{StaticResource PhoneTextTitle3Style}" /> <TextBlock Text="{Binding EndTime, StringFormat='{}{0:dd/MM/yyyy}'}" Style="{StaticResource PhoneTextTitle3Style}" /> </StackPanel> <TextBlock Text="{Binding Location, StringFormat='Local: {0:a}'}" Style="{StaticResource PhoneTextTitle3Style}" /> </StackPanel> </DataTemplate> </phone:PhoneApplicationPage.Resources> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot"> <Grid.Background> <ImageBrush ImageSource="Assets/Background/ImgFundo.png" /> </Grid.Background> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel Grid.Row="0" Margin="12,17,0,28"> <TextBlock Text="INFOESTE 2015" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock Text="minha agenda" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <!-- DEFINIÇÃO DO LISTBOX PARA EXIBIÇÃO DOS DADOS. REPARE O USO DO DATATEMPLATE ATRAVÉS DO ITEMTEMPLATE --> <ListBox Name="lblAgenda" Height="600" ItemTemplate="{StaticResource AtividadesItemTemplate}" VerticalAlignment="Top" /> </Grid> </Grid> </phone:PhoneApplicationPage>
Na sequencia temos a codificação necessária para acesso aos dados da agenda do Windows Phone.
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; using Microsoft.Phone.UserData; namespace Infoeste2015 { public partial class Calendario : PhoneApplicationPage { public Calendario() { InitializeComponent(); //DECLARAÇÃO DE UM OBJETO DA CLASSE APPOINTMENTS PARA RECUPERAÇÃO DOS DADOS DA AGENDA Appointments compromissos = new Appointments(); compromissos.SearchCompleted += compromissos_SearchCompleted; //DEFINIÇÃO DA DATA DE INÍCIO E FIM DO PERÍODO DE CONSULTA E TAMBÉM A QUANTIDADE MÁXIMA DE COMPROMISSOS A SEREM RECUPERADOS DateTime inicio = new DateTime(2015, 5, 18); DateTime final = inicio.AddDays(7); int max = 30; compromissos.SearchAsync(inicio, final, max, ""); } //ESSE MÉTODOS SERÁ INVOCADO APÓS A FINALIZAÇÃO DA PESQUISA PARA ENTÃO EXIBIRMOS OS DADOS NO LISTBOX void compromissos_SearchCompleted(object sender, AppointmentsSearchEventArgs e) { //OS DADOS CHEGAR ATRAVÉS DO ARGUMENTOS "e" DESTE MÉTODO. REPARE QUE NESSE EXEMPLO ESTAMOS BUSCANDO POR COMPROMISSOS CUJA PALAVRA CHAVE SEJA "INFOESTE". lblAgenda.ItemsSource = e.Results.Where(x => x.Subject.Contains("INFOESTE")); } } }
Como resultado final podemos verificar a exibição dos compromissos registrados dentro de um determinado período e que contenham a palavra chave “INFOESTE”.
Abraços,
Eduardo Henrique Rizo
Posts Relacionados:
- Curso Windows Phone gratuito
- Curso Windows Phone: Como adicionar compromissos na agenda do Windows Phone via código C#
- Curso Windows Phone – Como agendar alarmes e lembretes através da APP
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
Ola Boa Tarde, por favor vc poderia fazer um artigo sobre como utilizar camera do dispositivo, e como ler QRCodes em tempo real ?
Obrigado
Olá Alessandro, tudo bom?
Vou pesquisar um pouco sobre o assunto e assim que possível escrevo um post sobre o assunto.
Continue acompanhando o Blog.
Abraços,
Eduardo H. Rizo
Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo