Get ready for Windows Phone 7.5 – Part 8.2 – Live Tiles

December 27, 2011

imageבפוסט הקודם הצגתי מה חדש בגירסת מנגו בנוגע ל- Live Tiles והראתי כיצד ניתן לעדכן Tiles בזמן שהאפליקציה רצה בצורה קלה וללא כל צורך במנגנון Push Notification. בפוסט המשך זה אסביר כיצד ניתן ליצור Tiles מישניים עבור האפליקציה שלכם, ואראה כיצד לנווט לדף שונה מהדף הראשי בעת לחיצה על Tile משני.
 
מבוא
החל מגירסת מנגו, ניתן ליצור Tiles מישניים עבור אפליקציה אחת, כלומר יותר מ- Tile אחד בו זמנית עבור אותה אפליקציה בדף הראשי.
הרעיון שעומד מאחורי Tile מישני זה לתת למשתמש יכולת להתמקד ולהתעדכן בנתונים מישניים באפלקציה, והיכולת להזניק אפליקציה ישירות עם הדף הרלוונטי לנתון המשני.
 
לדוגמה, באפליקציה שמציגה נתוני מזג אוויר, ניתן ליצור Tiles מישניים, אחד עבור כל עיר מעניינת, כך שבעת לחיצה על Tile מישני תיפתח האפליקציה ותציג נתונים רלוונטיים לאותה עיר.
 
הוספת Tile מישני
כדי להוסיף Tile מישני, קודם נחפש אם כבר קיים אחד כזה, אם לא קיים, נוסיף בעזרת המחלקה ShellTile ובעזרת המטודה הסטטית Create. כדי לבדוק אם כבר קיים Tile נבצע חיפוש ברשימת ה- Tile האקטיביים באפליקציה בצורה הבאה:
   1: // Try find Secondary Tile. If not found, create one.

   2: var secondaryTile = ShellTile.ActiveTiles.FirstOrDefault(

   3:     x => x.NavigationUri.ToString().Contains("City=" + Title));

כפי שניתן לראות, ShellTile.ActiveTiles מכיל את כל ה- Tiles של האפליקציה, כולל הראשי והמישניים. כדי להבדיל בין Tile מישניים, מראש ניצור אותם עם תוספת קלה לכתובת שמיצגת את הדף שיש לנווט אליו (נראה בהמשך), במקרה שלנו “City=city-name”.
 
אם ה- Tile המישני לא נוצר בעבר וזאת הפעם הראשונה, ניצור אותו בצורה הבאה:
   1: if (secondaryTile == null)

   2: {

   3:     // Create a Secondary Tile

   4:     ShellTile.Create(

   5:         new Uri("/WeatherDetailsPage.xaml?City=" + Title, UriKind.Relative),

   6:         TileData);

   7: }

המטודה הסטטית ShellTile.Create מקבלת 2 פרמטרים: כתובת לדף שאוטומטית יפתח אם נלחץ על ה- Tile המישני בתפריט הראשי, וכפי שציינתי קודם עם תוספת פרמטר שיבדיל את ה- Tile מ- Tiles האחרים. במקרה שלנו הכתובת הינה WeatherDetailsPage.xaml?City=city-name/
 
אם נריץ את הקוד שהצגתי, מיד לאחר קריאה ל- Create האפליקציה תיצור Tile מישני בתפריט הראשי ותעביר אותנו לתפריט הראשי כאילו ולחצנו על כפתור התחל. אם נלחץ Back, נחזור לאפליקציה, אם נלחץ על ה- Tile המישני, תפתח האפליקציה עם הדף המישני שצויין בכתובת.
 
קבלת פרמטר של Tile מישני
ניתן לחלץ את הפרמטר שהוצמד ל- Tile המישני, וזה אם נרצה לעשות שימוש באותו דף, ועדיין להבדיל בין Tiles מישניים שונים. למשל באפליקציה של מזג אויר, ניצור Tile מישני לכל עיר, כך שלחיצה על Tile מישני יפתח דף שמציג את נתוני מזג האוויר עבור אותה עיר. כדי להבדיל בין הערים נחלץ את הפרמטר באופן הבא:
   1: public partial class WeatherDetailsPage : PhoneApplicationPage

   2: {

   3:     public WeatherDetailsPage()

   4:     {

   5:         InitializeComponent();

   6:     }

   7:  

   8:     protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

   9:     {

  10:         var city = NavigationContext.QueryString["City"];

  11:         DataContext = city;

  12:         base.OnNavigatedTo(e);

  13:     }

  14: }

כפי שניתן לראות, ביצענו override למטוה OnNavigatedTo של הדף אותו אנו מעונינים להציג בעת לחיצה על ה- Tile המישני. את הפרמטר נחלץ ישירות מהארגומנט שמועבר למטודה, או בעזרת NavigationContext.QueryString, כאשר שם הפרמטר הוא זה שקבענו קודם, לפני סימן ה- “=”, במקרה שלנו “City”.
 
 
SNAGHTMLf746e11SNAGHTMLf72faf9SNAGHTMLf74097bSNAGHTMLf741bda
 
מה בפוסט הבא?
Running Silverlight and XNA side by side
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>

*