<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows &lt;font color="red"&gt;DEV&lt;/font&gt;ices &lt;font color="red"&gt;DEV&lt;/font&gt;</title><link>http://blogs.microsoft.co.il/blogs/eshaham/</link><description>Elad Shaham&amp;#39;s Blog</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>מפגש קבוצת המשתמשים של Windows and Phone 8 - אוגוסט 2012</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/08/30/windows-and-phone-8-2012.aspx</link><pubDate>Thu, 30 Aug 2012 04:27:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1250759</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/08/30/windows-and-phone-8-2012.aspx#comments</comments><description>&lt;div align="right" dir="rtl"&gt;
תודה לכל מי שהשתתף במפגש של ה-Windows and Phone 8 User Group
אתמול בערב.&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;במפגש אירחנו את &lt;a href="http://beta.blogs.microsoft.co.il/blogs/michaelh/" target="_blank"&gt;מיכאל הברמן&lt;/a&gt; ממכללת סלע שדיבר על הדרך שאפליקצייה ל-Windows 8 עושה לפני שהיא עולה ל-Store. בהמשך חשפנו קצת מהגרסה של Windows Phone 8 SDK שדלפה לרשת ודיברנו על מה שהתחדש בגזרה זו. וגם חילקנו מלא פרסים!&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;אני רוצה להזכיר בהזדמנות זו שניתן להרשם לרשימת התפוצה של ה-User Group &lt;a href="http://eepurl.com/ohDfP" target="_blank"&gt;בכתובת זו&lt;/a&gt; בכדי להיות מעודכנים לגבי מפגשים עתידיים. כמו כן הנכם מוזמנים להצטרף &lt;a href="http://on.fb.me/On2AYR" target="_blank"&gt;לקבוצת הפייסבוק&lt;/a&gt;&amp;nbsp;&lt;a href="http://linkd.in/RgIXlp" target="_blank"&gt;ולקבוצת ה-LinkedIn&lt;/a&gt; שלנו.&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;במפגש הבא נדבר על ממשק המשתמש ב-Windows 8 ו-Windows Phone, כולם מוזמנים בחום להרשם ב-EventBrite:&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;&lt;a title="http://win8phoneuiux.eventbrite.com/" href="http://win8phoneuiux.eventbrite.com/"&gt;http://win8phoneuiux.eventbrite.com/&lt;/a&gt;&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;וגם נחשוף תחרות ראשונה מסוגה בה המנצח יזכה ב-Windows Phone 8!!!&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="right" dir="rtl"&gt;אני מצרף את המצגת שהכנתי על מה התחדש ב-Windows Phone 8.&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1250759" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/eshaham/attachment/1250759.ashx" length="46478" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+and+Phone+8+User+Group/default.aspx">Windows and Phone 8 User Group</category></item><item><title>תעודת כבוד לי</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/08/15/1216613.aspx</link><pubDate>Wed, 15 Aug 2012 22:30:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1216613</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/08/15/1216613.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt;
לפני כשעה התבשרתי שאני היועץ המצטיין מבין השותפים של מייקרוסופט לרבעון הנוכחי.&lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/msdn/archive/2012/08/15/elad-shaham-fy13-q1.aspx"&gt;http://blogs.microsoft.co.il/blogs/msdn/archive/2012/08/15/elad-shaham-fy13-q1.aspx&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;img border="0" hspace="-1" alt="" vspace="0" align="middle" src="http://blogs.microsoft.co.il/blogs/msdn/award_big_5F63FB54.jpg" width="58" height="89" /&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;זהו כבוד גדול מאוד עבורי! כמובן שלא הייתי יכול להגיע לזה ללא העזרה והדחיפה של מנהליי בסלע ולאנשי חטיבת DPE במייקרוסופט.&lt;br /&gt;אני רוצה להודות במיוחד לגיא בורשטיין ולצביה גיטלין מ-DPE שמאמינים בי ומאתגרים אותי בכל החודשים האחרונים!&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1216613" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category></item><item><title>הכרזה–Windows Phone 8</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/06/24/windows-phone-8.aspx</link><pubDate>Mon, 25 Jun 2012 01:36:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1130490</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/06/24/windows-phone-8.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt; &lt;p&gt;אתמול, במהלך כנס מפתחים מיוחד, הוכרזה סופסוף מערכת ההפעלה המיוחלת – Windows Phone 8. מערכת הפעלה זו היא שדרוג של ממש מהנוכחית. עד כדי בעיות תאימות חומרה.&lt;/p&gt; &lt;p&gt;אז נתחיל בחדשות הרעות – כל מי שכבר יש לו Windows Phone לא יזכה בשדרוג למערכת ההפעלה החדשה. לטענת מייקרוסופט, המכשירים הנוכחיים לא עומדים בדרישות החומרה של מערכת ההפעלה החדשה. צריך להבין ש-Windows Phone 8 תרוץ מעל NT, בניגוד לכל הגרסאות הקודמות שרצו מעל CE. ובכל זאת, אם נשים כמה עובדים של סלע וכל עובדי מייקרוסופט בצד, לאור נתח השוק של Windows Phone, ספק אם תהיה הקיץ מחאה חברתית חדשה, לפחות לא בנושא זה. כמה מילים אחרונות בנושא – אני חושב שמייקרוסופט קצת הזניחו את אחרוני משתמשיה הנאמנים, בטח ובטח את שותפתה האסטרטגית, נוקיה. האחרונה השקיעה סכומי עתק בשיווק ליין הלומיה בארה”ב, ומשתשמשים שרכשו רק לפני חודשיים מכשיר Lumia 900 מחזיקים ברגע זה מכשיר מיושן…&lt;/p&gt; &lt;h3&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/6786.StartScreen_Maria35_00AF4A40_6BD448C6.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px 10px 0px 0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="6786.StartScreen_Maria35_00AF4A40" border="0" alt="6786.StartScreen_Maria35_00AF4A40" align="left" src="http://blogs.microsoft.co.il/blogs/eshaham/6786.StartScreen_Maria35_00AF4A40_thumb_0A6A2571.png" width="226" height="375" /&gt;&lt;/a&gt;אז מה כן טוב?&lt;/h3&gt; &lt;p&gt;למען האמת, ההמשך עדיין נראה בעיניי ורוד. Windows Phone 8 מבוססת על קוד משותף של Windows 8, מערכת ההפעלה החדשה של מייקרוסופט למחשבים שולחניים וטבלטים. כמו שאני טוען שוב ושוב, שוק האפליקציות של Windows 8 הוא שוק עם פוטנציאל של מאות מליוני משתמשים, ואם אותה אפליקציה שפותחה ל-Windows 8 תוכל לרוץ (אולי אם התאמות קלות) על ה-Phone 8, אז יש לנו שילוב מנצח. המתחרות אמנם חזקות בשוק הטלפונים החכמים והטבלטים, אבל יש להם ייצוג זניח בצד המחשבים השולחניים והמחשבים הניידים. אני באמת מאמין שתהיה ל-Windows Phone את היכולת למנף את העוצמה של אחותה הגדולה (רגע, מערכת הפעלה זו נקבה, נכון?) על מנת לנכס לעצמה נתח שוק גדול משמעותית.&lt;/p&gt; &lt;h3&gt;מה עוד התחדש ב-Windows Phone 8?&lt;/h3&gt; &lt;p&gt;חדי העין בטח כבר שמו לב שמסך הבית מקבל שדרוג ונראה הרבה יותר מטרו מאשר לפני כן. בעלי מכשירים קיימים שמריצים את Phone 7 ישמחו לגלות (וזה הדבר המשמח היחיד) שאת מסך הבית החדש יקבלו גם הם במסגרת גרסה 7.8.&lt;/p&gt; &lt;p&gt;פיתוח אפליקציות ב-++C – כן, כן, אמנם מרגיש לחלק מאיתנו כחזרה לאחור, אבל עבור מפתחים רבים שכבר מפתחים ב-++C לפלטפורמות שונות, היה מדובר עד היום בחסם משמעותי לכניסה לפיתוח לפטפורמה.&lt;/p&gt; &lt;p&gt;חיבור ל-Bluetooth Stack – מפתחים יוכלו סופסוף להתחבר ל-Bluetooth על מנת לאפשר לאפליקציה/משחק שלהם לתקשר עם משתמשים אחרים בסביבה. לא חדשני, אבל סופסוף כאן…&lt;/p&gt; &lt;p&gt;רכישה בתוך האפליקציה, או באינגלזית, In-App-Purchase. ניתן יהיה לשלב את היכולת לבצע רכישות נוספות מתוך האפליקציה עצמה. גם כאן, לא חדשני, אך נחוץ מאוד.&lt;/p&gt; &lt;p&gt;יכולת להריץ אפליקציות הצורכות שירותי מיקום ברקע. עד עכשיו, במידה והשתמשנו באפליקציית ניווט, ותוך כדי נכנסה לנו שיחה, האפליקצייה נכנסה לרקע ולא קיבלה יותר מעבד ושירותי מיקום. כשחזרנו לאפליקציה, היא הייתה צריכה להתאפס שוב. עכשיו נוכל לקבל שירותי ניווט כמו שצריך. מישהו אמר &lt;a href="http://www.waze.com" target="_blank"&gt;Waze&lt;/a&gt;???&lt;/p&gt; &lt;p&gt;Company Hub – חברות וארגונים יוכלו ליצור לעצמם Hub שיכיל קישורים לאפליקציות פנים אירגוניות.&lt;/p&gt; &lt;h3&gt;&lt;/h3&gt; &lt;p&gt;עברית!!! צריך להוסיף הסברים?&lt;/p&gt; &lt;p&gt;בנוסף לכל זה, &lt;a href="http://community.microsoftadvertising.com/en/marketers-agencies/advertising/b/advertising/archive/2012/06/06/pubcenter-expanding-internationally-revenue-fund-transfer-opportunity.aspx" target="_blank"&gt;פורסם לפני כמה ימים&lt;/a&gt; ש-Pub Center, מערכת הפרסומות של מייקרוסופט, תפתח בתקופה הקרובה למפתחים ממס’ מדינות נוספות, ישראל בינהן. לידיעה כללית, פקד הפרסומות של מייקרוסופט הוא בין הרווחיים בשוק!&lt;/p&gt;&lt;h3&gt;לסיכום&lt;/h3&gt; &lt;p&gt;קיץ חם עוד לפנינו, עם מחאה חברתית, או בלעדיה!&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1130490" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Metro Style Apps - פורום חדש</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/06/18/metro-style-apps.aspx</link><pubDate>Mon, 18 Jun 2012 18:28:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1123357</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/06/18/metro-style-apps.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt;
בשעה טובה ומוצלחת נפתח פורום חדש לפיתוח אפליקציות מסוג מטרו ל-Windows 8.&lt;br /&gt;כל מי שלא התנסה עדיין בפיתוח אפליקציות ל-Windows 8 - למה אתם מחכים?&amp;nbsp;&lt;br /&gt;חנות האפליקציות החדשה של Windows 8 תפתח בקרוב ותוכלו לפרסם בה את האפליקציות שלכם - רק לידיעה, כמות המשתמשים הפוטנציאלים עולה בהרבה על שוק הסמארטפון - ל-Windows יש היום קרוב ל-700 מיליון (!!!) משתמשים רשומים.&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;הפורום, אותו אני מנהל ביחד עם עמיתים, מיועד לאנשי פיתוח שרוצים לשאול שאלות בנושא הפיתוח ל-Windows 8.&lt;/div&gt;
&lt;div dir="rtl" align="right"&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;קדימה, תפציצו אותנו בשאלות!!!&lt;/div&gt;
&lt;div dir="rtl" align="right"&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/metroappshe/threads"&gt;http://social.msdn.microsoft.com/Forums/he-IL/metroappshe/threads&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1123357" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Metro+Style+Apps/default.aspx">Metro Style Apps</category></item><item><title>Speaking at WPDevConf</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/22/speaking-at-wpdevconf.aspx</link><pubDate>Tue, 22 May 2012 11:11:53 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1099163</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/22/speaking-at-wpdevconf.aspx#comments</comments><description>&lt;div dir="ltr" align="left"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/wpdevconf_2C547E66.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px 5px 0px 0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="wpdevconf" border="0" alt="wpdevconf" align="left" src="http://blogs.microsoft.co.il/blogs/eshaham/wpdevconf_thumb_34F4D6F2.png" width="179" height="123" /&gt;&lt;/a&gt;  &lt;p&gt;Well, it seems like I’m going international.&lt;br /&gt;Yesterday the &lt;a href="http://wpdevcon.net/" target="_blank"&gt;WP Dev Conf&lt;/a&gt;, probably the largest independent Windows Phone conference to date, listed 2 of my sessions for the conference, which will take place on October 22-24, 2012, near San Francisco, CA. &lt;/p&gt; &lt;p&gt;I’m very honored to be invited to speak at WP Dev Conf, and love the idea it will be focusing on a topic I love talking about – Windows Phone. My two sessions will be:&lt;/p&gt; &lt;h2&gt;From a New Windows Phone Project to the Marketplace&lt;/h2&gt; &lt;p&gt;The list of things you need to do in order to create a new Windows Phone project, implement its business logic, and upload it to the Marketplace, may sound intimidating. The truth of the matter is, it couldn&amp;#39;t be easier. Develop, test, upload—that&amp;#39;s all there is to it.&lt;/p&gt; &lt;p&gt;In this session, we will create a simple Windows Phone application, make sure it passes certification, and upload it to the Windows Phone marketplace. You don&amp;#39;t have to be a super developer to create a Windows Phone app; in fact, some of the best Windows Phone apps are created by students. But developing a GOOD app takes a certain amount of effort.&lt;/p&gt; &lt;p&gt;We need to make our app stand out by creating a good user experience, which follows the UI guidelines, and make sure it works flawlessly. Luckily, the certification of all apps helps us in the process of creating better apps, since we need to take care of the small details. You will be shown how to leverage the SDK&amp;#39;s built-in tools to make your app certification-ready.&lt;/p&gt; &lt;h2&gt;Prism, Caliburn Micro, MVVM Light – Best frameworks for Windows Phone&lt;/h2&gt; &lt;p&gt;Mobile apps can sometimes be as simple as creating a home page, throwing in an app bar and adding a nice background. As the app we&amp;#39;re creating gets more complicated, we begin to examine frameworks that will not only create some order in our code, but also make our code much more maintainable. &lt;/p&gt; &lt;p&gt;In this session, we will introduce the more significant client-side frameworks for Windows Phone, and discuss the pros and cons of using each one of them. At first we will focus on Prism, perhaps the most important UI framework in the XAML world. We will show how Prism, a framework created by Microsoft&amp;#39;s Patterns and Practices team, is fully supported under Windows Phone. Later, we will show the very mature Caliburn Micro framework vs. the light but reliable MVVM Light solution. We&amp;#39;ll sum up by comparing all three frameworks, side by side, so you&amp;#39;ll know which one to pick for your needs.&lt;/p&gt; &lt;h1&gt;See you there&lt;/h1&gt; &lt;h1&gt;&lt;/h1&gt; &lt;p&gt;I believe this experience will be fun, and I’m looking forward to it.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1099163" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/OffTopic/default.aspx">OffTopic</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>Windows Phone: מדריך למפתחים נבוכים – ארכיטקטורה (פרק 3)</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/08/windows-phone-3.aspx</link><pubDate>Wed, 09 May 2012 02:21:41 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1086623</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/08/windows-phone-3.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt; &lt;p&gt;מה??? איזה ארכיטקטורה??? כולה אפליקציה פשוטה, שמים קצת קוד ב-code behind וסיימנו…&lt;br /&gt;תגובות כאלה אני מקבל בכל פעם שאני מזכיר את המילה ארכיטקטורה בשיחות ובהרצאות שעוסקות ב-Windows Phone.&lt;/p&gt; &lt;p&gt;אז זהו, שכן! גם לאפליקציות סלולריות מגיע שיתכננו אותן טוב יותר. אמנם, לרוב מדובר באפליקציות פשוטות, המיועדות לבצע משימה קטנה ולהיות מפותחות מהר ככל האפשר, ובכל זאת, ככל שנתכנן אותן טוב יותר כך נוכל בסופו של דבר לפתח ולתחזק אותן בצורה פשוטה יותר.&lt;/p&gt; &lt;p&gt;פוסט זה הוא החלק השלישי בסדרת Windows Phone: מדריך למפתחים נבוכים.&lt;br /&gt;בחלקים הקודמים למדנו &lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/01/13/windows-phone-1.aspx"&gt;למה כדאי לנו לבחור ב-Windows Phone&lt;/a&gt; כפלטפורמה לאפליקציה החדשה שלנו, &lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/02/windows-phone-2.aspx"&gt;והבנו מה כדאי לנו לפתח&lt;/a&gt;, ותחת איזה סוג של רשיון.&lt;/p&gt; &lt;h3&gt;למה אתה מתכוון כשאתה מדבר על ארכיטקטורה לאפליקציה סלולרית?&lt;/h3&gt; &lt;p&gt;קודם כל בואו נדבר קצת על השכבות השונות המעורבות באפליקציה שלנו. לא מדובר רק על החלוקה ל-client-server-database, אלא גם על חלוקה פנימית של חלקי ה-client השונים.&lt;/p&gt; &lt;p&gt;אם נתחיל מהעבודה עם צד השרת, אין ספק שכמעט כל אפליקציה מתוחכמת שמכבדת את עצמה צריכה שרת ובסיס נתונים מרכזי – לו רק על מנת לאפשר גיבוי וסנכרון של נתוני המשתמש. האמירה נכונה גם לגבי משחקים שמנהלים, לדוגמא, את רשימת השחקנים המובילים. היום כולם מדברים על הענן, ומכיוון שב-NET. עסקינן, יש מן הסתם לשקול שימוש ב-&lt;a href="https://windows.azure.com/" target="_blank"&gt;Azure&lt;/a&gt;. אני לא מתכוון להכנס לשיקולים השונים של בחירת ה-server side שלנו, אם זה אחסון ב-shared hosting, שירותי ענן, או אפילו, רחמנא ניצלא, הקמת שרת עצמאי (עדיין עושים את זה היום…?), קודם כל כי אני לא מומחה server, אבל בעיקר כי זאת לא מטרת הפוסט. אני כן רוצה להגיד מילה על Azure. כמו לרובנו יש לי רשיון MSDN, ותחת רשיון זה אני יכול להתנסות בשירותים השונים של Azure בחינם. אני רוצה להגיד שהפשטות שבה ניתן להעלות service ל-Azure פשוט קנתה אותי. ניתן להשתמש ב-&lt;a href="http://watwp.codeplex.com/" target="_blank"&gt;Windows Azure Toolkit for Windows Phone&lt;/a&gt; בשביל להתחיל, לי זה עזר במספר פרוייקטים בהם עסקתי.&lt;/p&gt; &lt;p&gt;אוקיי, אז נחזור לצד ה-client. אז איזה ארכיטקטורה ניתן כבר לממש באפליקציית Windows Phone קטנה? אם נהיה רציניים לרגע, אני מאמין שברוב המקרים לא נממש אפליקצייה קומפוזיטית בעזרת framework כמו &lt;a href="http://compositewpf.codeplex.com/" target="_blank"&gt;Prism&lt;/a&gt; (למרות שניתן). ובכל זאת, ניתן בהחלט לקול שימוש ב-Design Patterns כמו MVVM – Model-View-View-Model. מכיוון שקצרה היריעה מלכסות גם את MVVM בפוסט זה, אני מפנה אתכם &lt;a href="http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/02/04/mvvm-102.aspx" target="_blank"&gt;למאמרי ה-MVVM&lt;/a&gt; של קולגה שלי מסלע הידוע בכינויו אלעד-MVVM-כץ לקריאה נוספת.&lt;br /&gt;מי שמכיר אותי ופגש אותי בהרצאותיי השונות בודאי יודע שיש לי שריטה בנוגע לעקרונות ארכיטקטורה ועיצוב&amp;nbsp; תוכנה – אני פשוט לא נותן לעצמי הנחות. כך לדוגמא, לא תמצאו אותי כותב code behind באפליקציות שלי. אך ככל שהאפליקצייה שלנו מסתבכת זה נהיה מורכב יותר, על אחת כמה וכמה כשכותבים אפליקציה ל-Windows Phone.&lt;/p&gt; &lt;p&gt;נתייחס לדוגמא לנושא הניווט. כשאני בא לנווט מדף אחד למשנהו ב-Windows Phone, אני צריך להשתמש ב-NavigationService, לתת את ה-Uri של הדף אליו אני רוצה להתנווט,ולהעביר פרמטר במידת הצורך:&lt;/p&gt; &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Button_Click_1(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; someParam = 10;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    NavigationService.Navigate(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;/Page.xaml?someParam=&amp;quot;&lt;/span&gt; + someParam, UriKind.Relative));&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;את אותו פרמטר אני אמור לקבל בעת הניווט לדף הבא – במקרה זה Page.xaml – ע”י דריסה של פונקצייה בשם OnNavigatedTo:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnNavigatedTo(NavigationEventArgs e)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.OnNavigatedTo(e);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; someParam = NavigationContext.QueryString[&lt;span style="color:#006080;"&gt;&amp;quot;someParam&amp;quot;&lt;/span&gt;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;?;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;מצד אחד נראה פשוט, אך איך MVVM משתלב בזה? הרבה יותר מדי code behine בשבילי…&lt;/p&gt;
&lt;p&gt;כאן נכנס framework שלמדתי לחבב אותו בתקופה האחרונה שנקרא &lt;a href="http://caliburnmicro.codeplex.com" target="_blank"&gt;Caliburn Micro&lt;/a&gt;. זהו open source framework שצמח מתוך framework אחר המוכר בתעשייה בשם Caliburn, והוא מיועד לספק את הכלים הבסיסיים לפיתוח אפליקציות בכל פלטפורמות ה-XAML. הוא כולל בין השאר, אבל לא רק, Container לאתחול אובייקטים באפליקציה, ViewModelLocator/ViewLocator לשידוך אוטומטי בין ה-View ל-ViewModel ללא צורך בקונפיגורציה ומנגנון לניווט בין ViewModels.&lt;/p&gt;
&lt;p&gt;אני לא מתכוון להכנס ב-post זה לעומקי Caliburn Micro, אסתפק בהדגמה של מנגנון הניווט בין ה-ViewModels כדי שתוכלו להשוות עם דוגמת הקוד מעלה.&lt;/p&gt;
&lt;p&gt;ניווט ל-ViewModel אחר עם פרמטר ב-Caliburn Micro:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; someParam = 10;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;_navigationService.&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    UriFor&amp;lt;SomeViewModel&amp;gt;().&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    WithParam(x =&amp;gt; x.SomeParam, someParam).&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    Navigate();&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;שימו לב שהפרמטר מועבר למעשה ל-property של SomeViewModel, כך שהוא נגיש מיד כש-ViewModel זה נטען. זה לא הרבה יותר ברור וקריא?&lt;/p&gt;
&lt;p&gt;לסיכום, גם לעולם האפליקציות ל-Windows Phone מגיע התייחסות רצינית, זאת על מנת שנוכל לפתח ולתחזק את האפליציה שלנו לאורך זמן. אני ממליץ בחום לנבור ולחקור את Caliburn Micro.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1086623" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Caliburn+Micro/default.aspx">Caliburn Micro</category></item><item><title>בית פתוח בנושא פיתוח אפליקציות METRO ל-Windows 8 שנערך היום</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/07/metro-windows-8.aspx</link><pubDate>Mon, 07 May 2012 22:54:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1085524</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/05/07/metro-windows-8.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt;
&lt;p&gt;תודה רבה לכל מי שהשתתף ביום הפתוח בנושא מבוא לפיתוח אפליקציות METRO&amp;nbsp; ל-Windows 8 שנערך היום במייקרוסופט רעננה.&lt;br /&gt;
אני מקווה שכולם נהנו כפי שאני נהנתי, תודה כמובן גם למייקרוסופט על האירוח.&lt;/p&gt;
&lt;p&gt;ערכנו מעבר על החידושים ב-Windows 8, מודל הפיתוח האסינכרוני ומחזור החיים החדש של אפליקציות.&lt;br /&gt;
כמו כן דיברנו על האפשרויות הנוספות הפתוחות עבורנו כמפתחי אפליקציות לביצוע אינטרקציה עם המשמש גם כשהאפליקציה לא רצה, כמו עדכון ה-Tile או השתתפות במנגנון החיפוש המובנה.&lt;/p&gt;
&lt;p&gt;אני מקווה שהצלחתי לגרום לכולם לרצות ללמוד עוד את הנושא – ויש עוד הרבה מה ללמוד.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;עדכון:&lt;/b&gt; הנה קטעי הוידאו משתי ההרצאות&lt;/p&gt;
&lt;h3&gt;Windows 8 Camp: Building Metro-style Apps with XAML and C# - Part 1&lt;/h3&gt;
&lt;iframe style="height:288px;width:512px;" src="http://channel9.msdn.com/Blogs/bursteg/Windows-8-Camp-Building-Metro-style-Apps-with-XAML-and-C-Part-1/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h3&gt;Windows 8 Camp: Building Metro-style Apps with XAML and C# - Part 2&lt;/h3&gt;
&lt;iframe style="height:288px;width:512px;" src="http://channel9.msdn.com/Blogs/bursteg/Windows-8-Camp-Building-Metro-style-Apps-with-XAML-and-C-Part-2/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;מצרף את המצגת ואת דוגמאות הקוד.&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1085524" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/eshaham/attachment/1085524.ashx" length="3264253" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Open+House/default.aspx">Open House</category></item><item><title>Fixing Frame Navigation in Metro Style Apps</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/04/30/fixing-frame-navigation-in-metro-style-apps.aspx</link><pubDate>Mon, 30 Apr 2012 05:26:53 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1078439</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/04/30/fixing-frame-navigation-in-metro-style-apps.aspx#comments</comments><description>&lt;div dir="ltr"&gt; &lt;p align="left"&gt;So, you&amp;#39;re already started working on your Metro Style App on Windows 8 Consumer Preview? That&amp;#39;s great! &lt;/p&gt; &lt;p align="left"&gt;As you know, there are still many issues with Metro Style Apps development on this version of Windows 8 - is it even a beta? Anyway, during development of an app for a customer in C# and XAML, I ran into several bumps. &lt;/p&gt; &lt;p align="left"&gt;Today I want to talk about a bug in the built in Frame control. This control is responsible for navigating between pages in Metro Style apps. When you want to navigate to a different page, you need to call the Frame class&amp;#39;s Navigate function: &lt;/p&gt; &lt;p align="left"&gt;&lt;strong&gt;Navigation in Windows 8 Metro Style Apps&lt;/strong&gt;&lt;/p&gt; &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; frame = (Frame)Window.Current.Content;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;frame.Navigate(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(SecondPage));&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Well, that&amp;#39;s simple enough, right? It is very similar to the way navigation works in Silverlight, and of course Windows Phone: &lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;Navigation in Silverlight and Windows Phone&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; pageUri = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;/Pages/SecondPage.xaml&amp;quot;&lt;/span&gt;, UriKind.Relative);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.NavigationService.Navigate(pageUri);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;You can notice the major difference from Silverlight is the use of the page type, rather than its Uri. This shouldn&amp;#39;t have been an issue, but unfortunately there seems to be a bug in the built in Frame control in Windows 8 Consumer Preview. Currently, when you try to Navigate to the same page type twice in a row - perhaps passing a different parameter each time - the navigation is not cached correctly by the internal navigation stack of the Frame class. &lt;/p&gt;
&lt;p align="left"&gt;So when you try to navigate back to the previous page, you&amp;#39;ll notice that the frame counts all instances of a specific page type as one entry in the navigation history stack. Here is a quick repro: &lt;/p&gt;
&lt;p align="left"&gt;Start from page A &lt;br /&gt;Navigate to page B (#1) &lt;br /&gt;Navigate to page B again (#2) &lt;br /&gt;Navigate back &lt;br /&gt;Notice that you&amp;#39;re back in page A, and the entry for page B (#1) is completely ignored. &lt;/p&gt;
&lt;p align="left"&gt;This can be quite frustrating, especially for developers like myself, with experience in developing XAML based apps in other frameworks. After reading in the Metro Style Apps forums, all I found was a suggestion to implement a fixed Frame control: &lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/61b66a9a-3557-4b6b-ab47-50bb9d44f38b"&gt;http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/61b66a9a-3557-4b6b-ab47-50bb9d44f38b&lt;/a&gt; &lt;/p&gt;
&lt;p align="left"&gt;Here I am, stepping up to the challenge. Trying to inherit from class Frame won’t do the trick – none of the Frame class members are marked as virtual. Creating our own Frame class could cause some other problems, since some built in classes like Page have members of type Frame. I decided to go this path since I needed the workaround, hopefully Microsoft will fix this bug in the next version.&lt;/p&gt;
&lt;p align="left"&gt;So what do we need? We need some sort of a FrameEx class which inherits from class ContentControl, allows navigation and remembers navigation history. We also need it to implement the INavigate interface, like the original Frame class does.&lt;/p&gt;
&lt;p align="left"&gt;Lets handle nav history first. We’ll create a Stack instance which will remember each call to create a page, together with the specific parameter:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Stack&amp;lt;PageTypeWithParam&amp;gt; _navigationStack;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; FrameEx()&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    _navigationStack = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Stack&amp;lt;PageTypeWithParam&amp;gt;();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Notice that the PageTypeWithParam class will be defined to hold the value for both page type and parameter for each navigation record.&lt;/p&gt;
&lt;p align="left"&gt;During the navigation request, the current record will be saved to temp fields while the previous record will be inserted to the stack:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Type _currentPageType;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; _currentParam;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Navigate(Type sourcePageType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (_currentPageType != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _navigationStack.Push(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PageTypeWithParam { PageType = _currentPageType, Param = _currentParam });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Content = page;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (parameter != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; page.DataContext == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        page.DataContext = parameter;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    _currentPageType = sourcePageType;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    _currentParam = parameter;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Notice that I chose to enter the parameter right into the page’s DataContext. This is far from ideal, but again, just like other limitations we ran into, I had no way of calling the OnNavigatedTo function of the page.&lt;/p&gt;
&lt;p align="left"&gt;Finally, the CanGoBack property and the GoBack function are pretty straight forward:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; CanGoBack&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    get&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _navigationStack.Count &amp;gt; 0;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; GoBack()&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    _currentPageType = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    _currentParam = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; pageTypeWithParam = _navigationStack.Pop();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    Navigate(pageTypeWithParam.PageType, pageTypeWithParam.Param);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Here is the full source code for the FrameEx class:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; FrameEx: ContentControl, INavigate&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Stack&amp;lt;PageTypeWithParam&amp;gt; _navigationStack;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Type _currentPageType;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; _currentParam;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; FrameEx()&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _navigationStack = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Stack&amp;lt;PageTypeWithParam&amp;gt;();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Navigate(Type sourcePageType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (sourcePageType == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color:#006080;"&gt;&amp;quot;sourcePageType&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; page = CreatePage(sourcePageType);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (page == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentException(&lt;span style="color:#006080;"&gt;&amp;quot;Page cannot be constucted from the given type&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;sourcePageType&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (_currentPageType != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            _navigationStack.Push(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PageTypeWithParam { PageType = _currentPageType, Param = _currentParam });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Content = page;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (parameter != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; page.DataContext == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            page.DataContext = parameter;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _currentPageType = sourcePageType;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _currentParam = parameter;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Navigate(Type sourcePageType)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Navigate(sourcePageType, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Page CreatePage(Type sourcePageType)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; page = Activator.CreateInstance(sourcePageType) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Page;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; page;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; CanGoBack&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        get&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _navigationStack.Count &amp;gt; 0;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; GoBack()&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _currentPageType = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        _currentParam = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; pageTypeWithParam = _navigationStack.Pop();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        Navigate(pageTypeWithParam.PageType, pageTypeWithParam.Param);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; GoHome()&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (_navigationStack.Count &amp;gt; 0)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (_navigationStack.Count &amp;gt; 1)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;                _navigationStack.Pop();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;            GoBack();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; PageTypeWithParam&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Type PageType { get; set; }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Param { get; set; }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Of course we will need to use our new FrameEx class in App OnLaunched method:&lt;/p&gt;
&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnLaunched(LaunchActivatedEventArgs args)&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;// ...&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;// Create a Frame to act navigation context and navigate to the first page&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rootFrame = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; FrameEx();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    rootFrame.Navigate(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(HomePage));&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;// Place the frame in the current Window and ensure that it is active&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    Window.Current.Content = rootFrame;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;    Window.Current.Activate();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p align="left"&gt;Have fun…&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1078439" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Metro+Style+Apps/default.aspx">Metro Style Apps</category></item><item><title>מפגש Windows Devices User Group בנושא היכרות עם Windows 8</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/03/28/windows-devices-user-group-windows-8.aspx</link><pubDate>Wed, 28 Mar 2012 18:51:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1046662</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/03/28/windows-devices-user-group-windows-8.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt;
&lt;p&gt;תודה רבה לכל מי שהגיע למפגש אתמול בנושא פיתוח אפליקציות מסוג Metro Style ב-C# ל-Windows 8.&lt;br /&gt;היה כיף לראות קבוצה של אנשים עם כל כך הרבה ידע בתחום פיתוח מבוסס XAML, אפילו למדנו כמה דברים חדשים…&lt;br /&gt;(למשל, ידעתם שנכון לרגע זה, אין דבר כזה שנקרא MarkupExtension ב-WinRT? המחלקה Binding יורשת ישירות מ-DependencyObject).&lt;/p&gt;
&lt;p&gt;ברכות לארז שזכה במכשיר Windows Phone חדש במסגרת התחרות שקיימנו בקבוצה.&lt;/p&gt;
&lt;p&gt;בכל אופן, במפגש הבא שיערך ב-24/4/12 נרחיב את הידע שלנו ב-Windows 8, וננסה להביא מישהו שיספר לנו על חווית הפיתוח של אפליקציה אמיתית. במידה ויש לכם נושאים שתרצו שנדבר עליהם, או אפילו תרצו לדבר בעצמכם, צרו קשר איתי או עם &lt;a href="http://blogs.microsoft.co.il/blogs/pavely/" target="_blank"&gt;פבל יוסיפוביץ’&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;מצרף את המצגת ודוגמאות הקוד מהמפגש.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1046662" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/eshaham/attachment/1046662.ashx" length="1642530" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+and+Phone+8+User+Group/default.aspx">Windows and Phone 8 User Group</category></item><item><title>ה-Windows Phone Marketplace עושה עליה</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/03/23/windows-phone-marketplace.aspx</link><pubDate>Fri, 23 Mar 2012 05:12:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040439</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/03/23/windows-phone-marketplace.aspx#comments</comments><description>&lt;div dir="rtl" align="right"&gt; &lt;p&gt;&lt;img style="margin:0px 0px 0px 6px;display:inline;float:right;" align="right" src="http://blogs.microsoft.co.il/blogs/eshaham/wp7_169FBE5F_thumb_7491ED51.jpg" width="61" height="54" alt="" /&gt;עוד בשורה טובה למפתחי Windows Phone בארץ הקודש. כפי שהכנתי אתכם בפוסט הקודם, בלוג המפתחים ל-Windows Phone &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/03/22/app-hub-now-open-for-new-markets.aspx" target="_blank"&gt;פרסם לפני זמן קצר&lt;/a&gt; שניתן לפרסם אפליקציות ל-23 מדינות חדשות, ישראל בתוכן. מפתחים שכבר פרסמו אפליקציות מוזמנים לגשת לעמוד האפליקציה שלהם ב-AppHub: &lt;/p&gt; &lt;p&gt;&lt;img alt="Marketplace My App Screenshot" src="http://create.msdn.com/assets/cms/images/news/marketplace_news_1.png" /&gt;&lt;/p&gt; &lt;p&gt;ללחוץ על Lifecycle ו-Edit catalog details:&lt;/p&gt; &lt;p&gt;&lt;img alt="Marketplace My App Screenshot" src="http://create.msdn.com/assets/cms/images/news/marketplace_news_2.png" /&gt;&lt;/p&gt; &lt;p&gt;שם צריך לבחור מדינות חדשות לאפליקציה שלנו:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/image_54D50F2F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/eshaham/image_thumb_52B81066.png" width="416" height="387" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;סוף סוף יש לאפליקציית &lt;a href="http://www.windowsphone.com/en-US/apps/54ca1698-c1eb-4a65-a2db-5505a6dbfdb8" target="_blank"&gt;הפנגו&lt;/a&gt; שלי בית חם ואוהב…&lt;br /&gt;קדימה רבותיי, להתחיל לכתוב אפליקציות בעברית!&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040439" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Israel/default.aspx">Israel</category></item><item><title>חידושים ב-Windows Phone: להורדה SDK חדש (וגם ספויילר: ישראל בפנים)</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/27/windows-phone-sdk.aspx</link><pubDate>Tue, 28 Feb 2012 04:18:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1021732</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/27/windows-phone-sdk.aspx#comments</comments><description>&lt;div style="direction:rtl;text-align:right;"&gt;
&lt;p&gt;&lt;img style="margin:0px 0px 0px 10px;display:inline;float:right;" align="right" src="http://blogs.microsoft.co.il/blogs/eshaham/wp7_169FBE5F_thumb_7491ED51.jpg" alt="" /&gt;אז בתור התחלה נפתח בידיעה החשובה של המהדורה: המרקט של Windows Phone בדרך לישראל. &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/02/27/get-ready-for-60-more-potential-customers.aspx" target="_blank"&gt;בפוסט&lt;/a&gt; שפורסם בבלוג הפיתוח ל-Windows Phone מופיעה רשימה של 23 מדינות חדשות שיצטרפו למרקט של Windows Phone במהלך החודש הקרוב. בין המדינות מופיעה, כאמור, ישראל. המשמעות היא שבקרוב משתמשים מישראל יוכלו להוריד אפליקציות כחול לבן שיכוונו לשוק הישראלי ספיציפית.&lt;/p&gt; &lt;p&gt;מה זה אומר מבחינתנו, כמפתחי אפליקציות ל-Windows Phone? &lt;br /&gt;כמובן שקודם כל יש כאן הסטוריה קטנה – &lt;strong&gt;אנחנו על המפה!!!&lt;/strong&gt; אני מניח שמתקרב היום בו תהיה תמיכה עברית וימכרו מכשירי Windows Phone בחנויות ספקי הסלולר הישראליים.&lt;br /&gt;בנוסף, נוכל כמובן לייצר אפליקציות המיועדות לקהל הישראלי (לדוגמא אפליקציית &lt;a href="http://www.windowsphone.com/en-US/apps/54ca1698-c1eb-4a65-a2db-5505a6dbfdb8" target="_blank"&gt;פנגו&lt;/a&gt; – לא רשמית – שכתבתי והועלתה מחוסר ברירה למרקט האמריקאי), שיהיו נגישות רק לישראלים.&lt;/p&gt; &lt;p&gt;ונעבור לנושא חשוב לא פחות. בגרסא הקרובה של Windows Phone, המכונה Tango מתכוונת מייקרוסופט להוריד את דרישות המינימום המחמירות של החומרה הנדרשת להרצת Windows Phone, זאת על מנת לאפשר ליצרניות החומרה לייצר טלפונים זולים יותר. דרישות החומרה הפחות מחמירות גורמות לשינויים ביכולות בהן האפליקציות שלנו מורשות להשתמש. לדוגמא, אפליקציות לא יוכלו להריץ תהליכי רקע (Background Tasks) במכשירים שיוצרו ברף התחתון של דרישות החומרה. כפועל יוצא מהמשמעויות של גרסא זו, עלינו לבדוק האם האפליקציות שכתבנו עד כה תומכות בגרסה החדש. ה-SDK החדש ל-Windows Phone, גרסא 7.1.1, הניתן להורדה &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=db24a032-0541-4ae3-96b5-f9f9a7374e06" target="_blank"&gt;מכאן&lt;/a&gt;, מאפשר לנו להריץ את האפליקציות שלנו מול אמולטור המדמה מכשיר חלש יותר. לבדיקתכם אודה… &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/eshaham/wlEmoticon-smile_6A284394.png" /&gt;&lt;/p&gt; &lt;p&gt;וזהו פחות או יותר.&lt;/p&gt; &lt;p&gt;מקווה לראות אתכם במפגש ה-Windows Devices User Group &lt;a href="http://windowsphonenavandlifecycle.eventbrite.com/" target="_blank"&gt;שמתקיים מחר&lt;/a&gt; ב-17:00 במשרדי מייקרוסופט רעננה, בו נדבר על מנגנון הניווט המובנה ועל מחזור חייה של אפליקציית Windows Phone.&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1021732" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Israel/default.aspx">Israel</category></item><item><title>בית פתוח בסלע בנושא Windows 8</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/27/windows-8.aspx</link><pubDate>Tue, 28 Feb 2012 03:11:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1021704</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/27/windows-8.aspx#comments</comments><description>&lt;div style="direction:rtl;text-align:right;"&gt;
&lt;p&gt;&lt;img style="MARGIN:0px 0px 0px 10px;DISPLAY:inline;FLOAT:right;" align="right" src="http://blogs.microsoft.co.il/blogs/eshaham/Windows8-metro-start_thumb_1255869A.png" width="176" height="93" alt="" /&gt;תודה רבה לכל מי שהשתתף בבית הפתוח שהתקיים היום בבית סלע.&lt;br /&gt;נהניתי מאוד לדבר איתכם על פיתוח אפליקציות Metro ל-Windows 8, ועל ההזדמנות שלנו יש, כמפתחים, להתכונן לכניסה לשוק של מערכת הפעלה מעניינת זו.&lt;/p&gt;
&lt;p&gt;אשמח לראות אותכם בכנס ה-&lt;a href="http://www.sela.co.il/s/SDP2012/index.html" target="_blank"&gt;SDP&lt;/a&gt; שיתקיים ב-25-29/3/12, שם נרחיב ונדבר על נושאים נוספים שקשורים לפיתוח ל-Windows 8, כמו גם חידושים בסביבת הפיתוח.&lt;/p&gt;
&lt;p&gt;מצרף את דוגמאות הקוד שהוצגו במהלך ההרצאה.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1021704" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/eshaham/attachment/1021704.ashx" length="429497" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Sela+Developer+Practice/default.aspx">Sela Developer Practice</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Open+House/default.aspx">Open House</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/TECH/default.aspx">TECH</category></item><item><title>מפגש של ה-Windows Devices User Group בפברואר</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/07/temp.aspx</link><pubDate>Wed, 08 Feb 2012 04:52:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1009074</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/07/temp.aspx#comments</comments><description>&lt;div style="direction:rtl;text-align:right;"&gt;
&lt;p&gt;אני רוצה להזמין אתכם למפגש הבא של קבוצת המשתמשים של התקני חלונות (או באנגלית Windows Devices User Group) שאני מנהל יחד עם פבל יוסיפוביץ’. המפגש ייערך בתאריך 28 לפברואר 2012, בשעה 17:00 בערב, במשרדי מייקרוסופט, רעננה.&lt;/p&gt; &lt;p&gt;במפגש זה נרחיב את הידע שלנו בנושא Windows Phone. &lt;br /&gt;נדבר על מנגנון הניווט המובנה ועל מחזור חייה של אפליקציית Windows Phone (תומר שמם).&lt;br /&gt;בנוסף, דורי מחברת SBSH יספר על הסבה של אפליקצייה מוצלחת בשם &lt;a href="http://www.sbsh.net/password-manager-safewallet"&gt;SafeWallet&lt;/a&gt; ל-Windows Phone.&lt;/p&gt; &lt;p&gt;ניתן להרשם &lt;a href="http://windowsphonenavandlifecycle.eventbrite.com/"&gt;בקישור זה&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;מי שעדיין לא הצטרף &lt;a href="http://www.linkedin.com/groups/Windows-Devices-Israel-User-Group-4256199?gid=4256199&amp;amp;trk=hb_side_g"&gt;לקבוצה שפתחנו ב-LinkedIn&lt;/a&gt; מוזמן לעשות זאת.&lt;/p&gt; &lt;p&gt;נתראה ב-28…&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1009074" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+and+Phone+8+User+Group/default.aspx">Windows and Phone 8 User Group</category></item><item><title>Windows Phone: מדריך למפתחים נבוכים – מה לפתח (פרק 2)</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/02/windows-phone-2.aspx</link><pubDate>Thu, 02 Feb 2012 17:14:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1004869</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/02/02/windows-phone-2.aspx#comments</comments><description>&lt;div style="direction:rtl;text-align:right;"&gt;
&lt;p&gt;פוסט זה הוא החלק השני בסדרת Windows Phone: מדריך למפתחים נבוכים.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/01/13/windows-phone-1.aspx"&gt;בפרק בראשון&lt;/a&gt; בחרנו את Windows Phone כפלטפורמת הפיתוח לאפליקציה החדשה שלנו. בפרק הזה ננסה לחשוב ביחד איזה סוג של אפליקציה נרצה לפתח, ואיך נרוויח מזה משהו.&lt;/p&gt;
&lt;p&gt;קודם כל נרצה להבין איזה סוגים של אפליקציות המשתמשים רוצים. מצורפת מטה מפה המציגה סטטיסטיקה ששוחררה ע&amp;quot;י מייקרוסופט &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/01/11/windows-phone-2011-retrospective.aspx" target="_blank"&gt;בבלוג הפיתוח ל-Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="" src="http://windowsteamblog.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-53-84-metablogapi/5383.WP_2D00_Marketplace_2D00_Opportunity_2D00_infographic_2D00_r09b_2D00_011112_5F00_thumb_5F00_57B52915.jpg" width="604" height="1224" /&gt;&lt;/p&gt;
&lt;p&gt;יש כמה נתונים מעניינים במפה זו. דבר ראשון, שימו לב ש-64% מהאפלקציות שהמשתמשים מוכנים לשלם עליהן הן בעצם משחקים. גם בתחום האפליקציות החינמיות רוב ההורדות הן של משחקים. בסה&amp;quot;כ ניתן להבין מזה שהמשתמשים שלנו רוצים לשחק. מצד שני נוכל גם לשים לב שמתוך למעלה מ-50,000 אפליקציות שפורסמו, רק 14% הן משחקים. המסקנה המתבקשת היא שאם נפתח משחק, חינמי או בתשלום, כנראה שיהיה לו ביקוש בקרב המשתמשים.&lt;br /&gt;ניתן גם לראות שכל שאר הקטגוריות מתחלקות באופן די שווה, עם עדיפות לכלים (Tools and Productivity) ובידור (Entertainment).&lt;br /&gt;המפה יכולה לעזור לנו להבין איזה סוג של אפליקציה כדאי לנו לפתח, כשכמובן ניתוח סטטיסטי פשוט אומר שככל שהפער בין אחוז האפליקציות מקטגוריה מסויימת לאחוז הביקוש לאפליקציות מאותו סוג גדול יותר, ככה הסיכוי שלנו להצליח גבוה יותר.&lt;/p&gt;
&lt;h3&gt;חינם, בתשלום או גם וגם?&lt;/h3&gt;
&lt;p&gt;ישנם שני מודלים שניתן לישם: חינם או בתשלום. אם נתחיל דווקא מאפליקציות בתשלום, נגיד שבגדול המשתמשים של Windows Phone מוכנים לשלם על אפליקציות טובות. כמות האפליקציות בתשלום היא יחסית גבוהה, והשוק (עדיין) לא מוצף בהרבה אפליקציות חינמיות מוצלחות. כך שבמידה והרעיון שלכם טוב, תוכלו בקלות לדרוש עליו כסף. כמה כסף לדרוש זו כבר שאלה בפני עצמה. במידה ופוטנציאל ההורדה הוא גדול - למשל אם אתם פונים לקהל משמתמשים רחב כמו ציבור הנהגים - מומלץ לדרוש מחיר נמוך ככל האפשר - לצורך העניין דולר אחד. ככה תוכלו להגיע למסת משתמשים גדולה ובסופו של דבר כנראה להרוויח יותר. אם פוטנציאל ההורדה הוא קטן יותר - למשל קהל היעד הוא ציבור חובבי האופרה במנהטן - תצטרכו לשקול האם לבקש סכום גבוה יותר. בכל מקרה ניסוי ותהייה תמיד אפשרי. תמיד ניתן לשנות תמחור ולבדוק ביצועים.&lt;br /&gt;בכל מקרה, קחו בחשבון שמייקרוסופט לוקחת 30% מהרווחים על אפליקציות בתשלום. על הסכום שיועבר לחשבון הבנק שלכם בישראל תצטרכו לשלם גם מס הכנסה.&lt;/p&gt;
&lt;p&gt;גם המודל החינמי יכול להיות רווחי עבורכם. במידה ותרצו, תוכלו לשלב רכיב פרסומות באפליקציה שלכם, ולהרוויח על צפיות וקליקים (שוב, מס הכנסה). באחד הפרקים הבאים נבחן את האפשרויות שעומדות בפנינו לשילוב פרסומות ב-Windows Phone.&lt;br /&gt;רווח נוסף אפשרי מאפליקציה חינמית, הוא פרסום שלכם כמפתחי אפליקציות - לרוב כמות ההורדות של אפליקציה חינמית גדולה מכמות ההורדות של אותה אפליקציה בדיוק בתשלום. במידה ותכתבו אפליקציה חינמית מצליחה תוכלו להתבלט (ולהבליט בקורות חיים) וע&amp;quot;י כך למשוך את תשומת ליבם של מעסיקים מוצלחים. אפשרות זו מומלצת בעיקר לסטודנטים הרוצים לעבוד בתחום.&lt;/p&gt;
&lt;p&gt;המודל האחרון הוא גם בתשלום, וגם בחינם. ניתן לייצר גרסה חינמית של אפליקציה בתשלום, לפי מודל של Premium Content. במודל זה מי שרוכש את האפליקציה המלאה יקבל יותר יכולות ותכנים. את מודל הגם וגם ניתן ליישם בשתי דרכים: הראשונה היא יצירת שתי אפליקציות שונות, אחת חינמית ואחת בתשלום, ובאפליקציה החינמית לייצר קישור להורדת האפליקציה בתשלום. האפשרות השנייה היא Trial Mode, פונקצייה שניתן לשלב באפליקצייה בתשלום שלנו. ב-Trial Mode, המשתמש מוריד גרסת נסיון של האפליקציה שלנו, ואנחנו שולטים בדיוק איזה יכולות יהיו זמינים ב-Trial וב-Full Mode.&lt;/p&gt;
&lt;h3&gt;רעיונות&lt;/h3&gt;
&lt;p&gt;נקנח בהבנה פשוטה אחת. יש ביקוש גדול ובלתי מובן לאפליקציות פשוטות ושימושיות.&lt;br /&gt;ראו את ההצלחה שיש בכל הפלטפורמות לאפליקציות פנס לסוגיהן...&lt;br /&gt;אני פיתחתי (לפי רעיון של חבר) אפליקציה חינמית בשם &lt;a href="http://www.windowsphone.com/en-us/apps/caaa2a03-6c9c-461b-8056-89fa50b8e84b"&gt;Camera Mirror&lt;/a&gt;&amp;nbsp;שמשתמשת במצלמה הקדמית של המכשיר על מנת להציג תמונת מראה של המשתמש. לאפליקציה יש תוך קצת יותר מחודש למעלה מ-2000 הורדות. אמרתי כבר שלקח לי רק שעה לפתח אותה...?&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1004869" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>מפגש ראשון של ה-Windows Devices User Group</title><link>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/01/17/windows-devices-user-group.aspx</link><pubDate>Wed, 18 Jan 2012 04:50:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:990875</guid><dc:creator>Elad Shaham</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/01/17/windows-devices-user-group.aspx#comments</comments><description>&lt;div style="direction:rtl;text-align:right;"&gt;
&lt;p dir="rtl"&gt;אתמול קיימנו את מפגש המשתמשים הראשון של ה-Windows Devices User Group שאני מנהל יחד עם &lt;a href="http://blogs.microsoft.co.il/blogs/pavely/" target="_blank"&gt;פבל יוסיפוביץ’&lt;/a&gt;, והיה ממש כיף. אני רוצה להודות לכל מי שהגיע להאזין לנו, שאל שאלות ותרם לאירוע. במהלך הערב דיברנו על מערכת ההפעלה למכשירים סלולריים של מייקרוסופט, ה-Windows Phone, ועל הטכנולוגיות בהן ניתן לפתח אפליקציות – Silverlight ו-XNA. אה, וגם אכלנו פיצות (תודה מייקרוסופט על שאירחתם אותנו).&lt;/p&gt;
&lt;p dir="rtl"&gt;בכוונתנו להמשיך להפגש מדי כמה שבועות ולהעביר נושאים בנושא פיתוח למכשירי Windows השונים. בהזדמנות זו אני מזמין את כל מי שלא הגיע הפעם להצטרף בפעם הבאה. בנוסף נשמח לשמוע הצעות / בקשות לנושאים שיועברו במפגשי ה-User Group הבאים, כמו גם הצעות של משתתפים מתוך הפורום להעביר הרצאה בעצמם בנושא קשור.&lt;/p&gt;
&lt;p dir="rtl"&gt;פתחנו &lt;a href="http://www.linkedin.com/groups?about=&amp;amp;gid=4256199&amp;amp;trk=anet_ug_grppro" target="_blank"&gt;קבוצה של הפורום&lt;/a&gt; באתר LinkedIn וכולם מוזמנים להצטרף אליה, גם אם לא הגעתם במפגש הראשון (רק אם תביאו בפעם הבאה פתק מההורים). כמו כן, אני מצרף לפוסט את המצגת שהעברתי (פבל כבר &lt;a href="http://blogs.microsoft.co.il/blogs/pavely/archive/2012/01/17/first-meeting-of-the-windows-devices-israel-user-group.aspx" target="_blank"&gt;פרסם&lt;/a&gt; את המצגת שלו).&lt;/p&gt;
&lt;p dir="rtl"&gt;דבר אחרון, תזכורת לגבי התחרות שהכרזנו עליה: הראשון מבין חברי הפורום שיפרסם 3 אפליקציות ל-Windows Phone שיאושרו ויוצגו במרקט, ושסך כמות ההורדות של שלושתן יגיע ל-3000 יזכה לקבל מכשיר Windows Phone חדש דנדש. שימו לב שמדובר אך ורק באפליקציות שהוגשו לאישור אחרי ה-16/01/12, מועד המפגש הראשון של ה-User group. כל שעליכם לעשות הוא לשלוח אלי או אל פבל את ה-publisher name שלכם ב-App Hub מיד אחרי ששלושת האפליקציות שלכם אושרו ומופיעות במרקט.&lt;/p&gt;
&lt;p dir="rtl"&gt;נתראה בפעם הבאה…&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=990875" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/eshaham/attachment/990875.ashx" length="539692" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/eshaham/archive/tags/Windows+and+Phone+8+User+Group/default.aspx">Windows and Phone 8 User Group</category></item></channel></rss>