Get ready for Windows Phone 7.5 – Part 7.2 – Calendar and Contacts query

December 14, 2011

בפוסט הקודם הראתי כיצד לבצע שאילתה אל מול מאגר ה- Contacts האישי שבטלפון ע”י שימוש במחלקה Contacts, ופרסמתי אפליקצית דוגמה שמאפשרת לחפש אחר Contact ע”י לחיצה על אות מסרגל אותיות.
בפוסט המשך זה אציג כיצד לבצע חיפוש ולבצע שאילתות ב- Calendar של הטלפון.
 
כידוע, החל מגירסת מנגו יש את האופציה לקבל את רשימת ה- Appointments ביומן של המשתמש המוגדרים בטלפון, לקריאה בלבד מטעמי אבטחה. כדי לעשות זאת כל מה שצריך לעשות זה לעבוד מול מחלקה בשם Appointments בדומה לאיך שניגשנו לרשימת ה- Contacts.
 
לצורך הדוגמה, נניח שאנו מעונינים ליצור מסך דומה ל- Agenda שקיים לנו בטלפון כשנכנסים ל- Calendar ממסך ההתחלה.
כל מה שצריך לעשות זה ליצור מסך פשוט שמכיל רשימה: ListBox, ולבצע Binding לרשימה של Appointment. את רשימת ה- Appointments השונים נוכל לקבל בעזרת שאילתה פשוטה אל מול מחלקת Appointments באופן הבא:
 
הגדרת רשימה עם תבנית להצגת נתונים בעזרת Binding
   1: <ListBox ItemsSource="{Binding Appointments}">

   2:     <ListBox.ItemTemplate>

   3:         <DataTemplate>

   4:             <StackPanel>

   5:                 <TextBlock Text="{Binding StartTime, StringFormat=dddd\, MMMM dd\, yyyy}" FontSize="24" Foreground="Silver" />

   6:                 <TextBlock Text="{Binding StartTime, StringFormat=HH:MM}" FontSize="28" Foreground="White" />

   7:                 <TextBlock Text="{Binding Subject}" FontSize="32" Foreground="Orange" />

   8:                 <TextBlock Text="{Binding Location}" FontSize="32" Foreground="Silver" Margin="0,0,0,24" />

   9:             </StackPanel>

  10:         </DataTemplate>

  11:     </ListBox.ItemTemplate>

  12: </ListBox>

 
יצירת מחלקה מסוג Appointments ושאילה משעה נוכחי ועד שבעה ימים קדימה
   1: var appointments = new Appointments();

   2: appointments.SearchCompleted += appointments_SearchCompleted;

   3: appointments.SearchAsync(DateTime.Now, DateTime.Now + TimeSpan.FromDays(7), null);

כמו שניתן לראות, ניתן להעביר פרמטרים לפני תחילת השאילתה, שכמובן מתבצעת בצורה אסיכרונית, כגון תחילת תאריך, סוף תאריך, באיזה יומן לחפש או בכולם.
ניתן לקבל או לעבור על רשימת כל היומנים (Outlook, Facebook, Live) בעזרת איטרציה על Appointments.Accounts.
 
טיפול בתשובה ע”י יצירת מחלקה Agenda (מחלקת עזר פשוטה שיצרתי) שמכילה את התשובה עבור כל היומנים וחיבור ל- DataContext עבור Binding
   1: private void appointments_SearchCompleted(object sender, AppointmentsSearchEventArgs e)

   2: {

   3:     DataContext = new Agenda

   4:     {

   5:         Appointments = e.Results

   6:     };

   7: }

 
מה בפוסט הבא?
Live Tile Enhancements
 
Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*