Windows
Phone¿ª·¢£¨Ò»£©-- ¿ª·¢»·¾³ºÍ½á¹¹
ÓÖÊǺþÃûÓÐдBLOGÁË£¬×öÍêÉÏÒ»¸öMSNÏîÄ¿ºó¶¼ÊÇЩËöËéµÄÊÂÇ飬Ȼºó¾ÍÊÇÊÇÍæÉãÓ°°¡£¬ÂÃÓΰ¡¡£ÉÏÔÂÐݼÙÈ¥ÁËÌËÎ÷²Ø£¬ÕæÊDz»´í¡£»ØÀ´ÁËÒ²ÒªÊÕÐÄѧϰÁË¡£Windows
Phone 7.1µÄ¿ª·¢¹¤¾ß·¢²¼ÁË£¬Ò»Ö±¶ÔWP7ºÜ¹Ø×¢£¬ÏÖÔÚÖÕÓÚ¿ÉÒÔ¿ªÊ¼Ñ§Ï°ÁË¡£Æäʵ09Äê¾Íѧϰ¹ýsilverlight£¬¿´¹ý3µÄSDKÎĵµ£¬µ±Ê±ÒòΪ¹¤×÷£¬¶Ï¶ÏÐøÐøÒ²Ã»Óмá³ÖÏÂÀ´£¬ËùÒÔÕâ´ÎѧϰWP7˳±ãÖØÐÂѧϰSL¡£
ÉÏÖܰ²×°ÁËWP7.1µÄ¿ª·¢»·¾³£¬¹¤×÷Ö®Óà¿´ÁËÒ»ÖÜÎĵµ¡£Ä¿Ç°¹ØÓÚWPµÄѧϰÎĵµ´ó¶àÊÇÓ¢Îĵģ¬chian-pubÉϳöÏÖÁËÒ»±¾ÖÐÎĵÄÊ飬²»¹ý»¹ÊÇÍÆ¼ö¿´MSDN£¬ÉÏÃæÓÐ×îеÄWP7.1µÄÄÚÈÝ£¬±Ï¾¹7.1½øÐÐÁ˽ϴóµÄ¸üС£ÎÒдWindows
Phone¿ª·¢µÄÎÄÕÂÖ÷ÒªÊǶÔ×Ô¼º¿´µÄÎĵµ½øÐÐÒ»¸öÌáÁ¶ºÍ¼Ç¼£¬Ö÷ÒªÕë¶Ôwp7.1Beta¡£
Ò» Windows Phone ѧϰ×ÊÁÏ
ĿǰÖ÷ÒªµÄѧϰ×ÊÁÏ»¹ÊÇÀ´ÖÁÓÚ΢ÈíMSDNºÍ¡¶Programming Windows Phone 7¡·£¬ÆäÖÐMSDN°üº¬ÁË×îеÄ7.1BetaÌØÐԵĽéÉܺÍʹÓá£Ò»Ð©ÖÐÎÄÍøÕ¾ºÍÔ´´µÄBLOGÎÄÕ»ù±¾Ò²ÊÇÀ´×ÔÕâЩµØ·½¡£¶øMSDNÔÓ־ÿÆÚÓжÔWindows
Phone½éÉܵÄÎÄÕ¡£¹ØÓÚ½çÃæ¿ª·¢¿ÉÒԲο¼Silverlight¿ª·¢¡£
Windows Phone ÖÐÎÄ¿ª·¢ÖÐÐÄ
Windwos Phone Development
Silverlight for Windows Phone
Phone Platform Development
Windows Phone developer documentation
Programming Windows Phone 7
ÊÓÆÁѧϰ×ÊÁÏ
Windows Phone 7 ÖÐÎÄ¿ª·¢×ÊÁϸÅÀÀ
MSDNÔÓÖ¾
¶þ Windows Phone ¿ª·¢»·¾³
΢ÈíÔÚ5Ô·ݷ¢²¼ÁË´úºÅMangoµÄ×îпª·¢¹¤¾ß£¬Windows Phone Developer Tools
7.1 Beta £¨µã»÷ÏÂÔØISOÎļþ£©
ϵͳҪÇó£º
1.²Ù×÷ϵͳ£ºWindows Vista SP2 / Windows 7
2.Ó²¼þÒªÇó£º4GÓ²Å̿ռä 3GÄÚ´æ
3.ÊÖ»úÄ£ÄâÆ÷£ºDirectX10ÒÔÉÏÏÔ¿¨£¬WDDM1.1Çý¶¯
PS£ºÎҵıʼDZ¾ÊÇT2450+3GÄÚ´æ+HD2300ÏÔ¿¨£¬07ÄêµÄÁË£¬Õý³£ÔËÐС£
°²×°×¼±¸£º
1.Èç¹ûûÓа²×°VS2010£¬¿ÉÒÔÖ±½Ó°²×°Windows Phone Developer
Tools 7.1 Beta£¬Ëû»á×Ô´øExpress°æ±¾µÄVS2010 for Windows Phone
2.Èç¹û°²×°ÁËVS2010רҵ°æ»òÕ߸ü¸ß°æ±¾£¬¿ÉÒÔÖ±½Ó°²×°£¬µ«ÊDZØÐë°ÑVS2010µÄÓïÑÔÐ޸ijÉͬWindows
Phone Developer Tools 7.1 BetaÏàͬµÄÓïÑÔ
3.Èç¹û°²×°ÁËVS2010 RTM°æ±¾£¬±ØÐëÏȰ²×°VS2010 SP1£¨µã»÷ÏÂÔØISOÎļþ£©
4.Èç¹û°²×°ÁË·ÇÓ¢Îİ汾µÄWindows Phone Developer
Tools 7.0»ò Expression Blend£¬±ØÐëÏÈÐ¶ÔØÔÚ½øÐа²×°
PS£ºÎÒ֮ǰ°²×°ÁËVS2010ÖÐÎÄÆì½¢°æ£¬ËùÒÔÏȰ²×°ÁËSP1£¨°²×°SP1ʱµÚÒ»´Îµ½ÁËÒ»°ë¾ÍͣסÁË£¬ºóÀ´ÎÒ²éÁË˵¿ÉÄÜȱÉÙÎļþ£¬¾Í°ÑVS2010µÄISOÒ²¼ÓÔØµ½ÐéÄâ¹âÇýÖÐÈ»ºó¾Íͨ¹ýÁË£©£¬µ«ÊÇÒòΪWindows
Phone Developer Tools 7.1 BetaĿǰֻÓÐÓ¢ÎİæµÄ£¬ËùÒÔ°²×°Íê³Éºó£¬²¢Ã»ÓÐÔÚVS2010Öм¯³ÉWP7¿ª·¢Ä£°å£¬µ«¼¯³ÉÁËXNA
Game StudioµÄ¿ª·¢»·¾³£»¶øÊǰ²×°ÁËVS2010 Express for Windows Phone¡£

Èý µÚÒ»¸öWindows Phone 7³ÌÐò

ÎÒÃÇ¿ÉÒÔ¿´µ½ÆäÖÐÓкܶàÄ£°å¿ÉÒÔÑ¡Ôñ£¬ÏÂÃæ½øÐмòµ¥½éÉÜ£¬¾ßÌå¿ÉÒÔ½¨Á¢ÏàÓ¦ÏîÄ¿²é¿´
1.Windwos Phone Application: ´´½¨Ò»¸öÆÕͨµÄWindows
PhoneÓ¦ÓóÌÐò
2.Windwos Phone Databound Application:
´´½¨Ò»¸öºÍÊý¾Ý°ó¶¨ÓйصÄÏîÄ¿£¬Ê¹ÓÃÁбíºÍµ¼º½¿Ø¼þ
3.Windows Phone Class Library:´´½¨Ò»¸öÀà¿âÏîÄ¿
4.Windwos Phone Panorama Application:
´´½¨Ò»¸öÈ«¾°Ó¦ÓÃÏîÄ¿£¬Ê¹ÓÃÈ«¾°Panorama¿Ø¼þ
5.Windwos Phone Pivto Application:´´½¨Ò»¸öÊàÖáÓ¦ÓÃÏîÄ¿£¬Ê¹ÓÃPivto¿Ø¼þ
6.Windwos Phone 3D Graphics Application:
´´½¨Ò»¸öXNA¿ò¼ÜÖ§³ÖµÄÏîÄ¿£¨WP7.1¿ÉÒÔsilverlightºÍXNA¼¯³É£©
7.Windwos Phone Audio Playback Application:´´½¨Ò»¸öÒôƵ²¥·ÅµÄÀà¿âÏîÄ¿
8.Windwos Phone Audio Streaming Application:´´½¨Ò»¸öÒôƵÁ÷µÄÀà¿âÏîÄ¿
9.Windwos Phone Task Scheduler Agent:´´½¨Ò»¸öºǫ́ÈÎÎñ´úÀíÏîÄ¿£¨WP7.1ÖÐÐÂÔöÁ˺ǫ́¶àÈÎÎñ´úÀí£©

Ñ¡ÔñÁËÏîĿģ°åÖ®ºó£¬¾ÍҪѡÔñWindows PhoneµÄ¿ª·¢°æ±¾£¬Ä¿Ç°ÓÐ7.0ºÍ7.1¿ÉÒÔ½øÐÐÑ¡Ôñ¡£

ÉÏͼ¾ÍÊÇWP7µÄ¿ª·¢»·¾³£¬Èç¹ûÓпª·¢¹ýsilverlight£¬Ó¦¸Ã²»»áİÉú¡£×ó±ßÊÇͼÐεĽçÃæ»·¾³£¬ÆäËû.NETÆäËû¿ª·¢»·¾³Ò»Ñù£¬¿ÉÒÔÍϿؼþÀ´²¼¾Ö¡£¶øÓÒ²àÊÇÒ³ÃæµÄXAML´úÂ룬¿ÉÒÔͨ¹ý±àдXAMLÀ´²¼¾Ö¡£¹ØÓÚXAML¿ÉÒԲμûMSDN£¨µã»÷´ò¿ª£©
ÎÒÃǵĵÚÒ»¸ö³ÌÐòҪʵÏÖµÄÊǵã»÷Ò³ÃæÉϵÄÒ»¸ö°´Å¥µ¼º½µ½ÏÂÒ»¸öÒ³Ãæ£º
1 ÔÚMainPage.xamlÖÐÌí¼ÓÒ»¸ö°´Å¥£¬²¢ÇÒÌí¼Ó´¥ÆÁʼþ£¬´úÂëÈçÏÂ
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Width="250" Height="75" Content="Next Page"
ManipulationStarted="Button_ManipulationStarted"/></Grid> ¡· |
2 ΪÏîÄ¿Ìí¼ÓÒ»¸öеÄÒ³Ãæ£¬Êó±êÓÒ¼ü--ADD--New Item--Windows
Phone Portrait Page£¬Ãû×ÖΪPage1.xaml£¬ÔÚ´ÎÒ³ÃæÖÐÌí¼ÓÒ»¸öÎı¾ºÍÒ»¸ö·µ»Ø°´Å¥£¬´úÂëÈçÏ£º
¡¶ÕâÀïÓеãÒªÌØ±ð˵Ã÷µÄµØ·½¡· |
3 ΪMainPage.xamlµÄ´¥ÆÁʼþºÍPage1.xaml´¥ÆÁʼþÌí¼Ó´úÂ루ºÍC#ÆäËûÏîĿһÑù£¬Ò²ÊDzÉÓÃcode-behind£¬´úÂëÔÚxamlÒ³ÃæµÄcsÎļþÖУ©
¡¶ÕâÀïÓеãÒªÌØ±ð˵Ã÷µÄµØ·½¡· |
4 ±àÒëºóµãF5ÔËÐгÌÐò£¬Ä£ÄâÆ÷µÚÒ»´ÎÆô¶¯ÐèÒªµÈ´ý£¨ÎÒҲûÓÐÕæ»ú£¬ËùÒÔÎÞ·¨½øÐÐÕæ»úµ÷ÊÔ£©¡£È»ºóµã»÷Next
Page°´Å¥³ÌÐò½«µ¼º½½øÈëµ½µÚ¶þ¸ö½çÃæ¡£µÚ¶þ¸ö½çÃæÖеã»÷Backµ¼º½»ØÇ°Ò»¸ö½çÃæ¡£¿ÉÒÔ·¢ÏÖWindows
Phone³ÌÐòͬWeb³ÌÐòÒ³ÃæÓеãÀàËÆ£¬¶¼ÊÇPageµ¼º½µÄ¸ÅÄÕâ¸öºÍ֮ǰWMƽ̨ºÜ²»Ò»Ñù¡£µ«ÊÇʹÓùýWPF»òSilverlight¾ÍûÓÐÊ²Ã´ÌØ±ðµÄ¡£

5 ½øÈëµÚ¶þ¸öÒ³Ãæºó£¬µã»÷¡¾<--¡¿°´Å¥Ò²ÄÜÍ˻ص½µÚÒ»¸ö½çÃæ£¬Ôڵ㡾<--¡¿°´Å¥£¬¾Í»á¹Ø±Õ³ÌÐò¡£Òª×¢ÒâµÄÊÇ£¬Windows
PhoneĿǰûÓÐÌṩÈκÎÍ˳ö³ÌÐòµÄExit·½·¨£¬¶¼ÊÇͨ¹ýÔÚµÚÒ»¸öÒ³Ãæµã»÷¡¾<--¡¿°´Å¥Í˳ö³ÌÐò¡£ÔÚ³ÌÐòÖеã»÷ÖмäµÄHome°´Å¥·µ»Øµ½HomeÁÐ±í£¬´Ëʱ³ÌÐò»á½øÈëÐÝÃߣ¨WP7.1£©»òű®£¨WP7.0£©×´Ì¬£¬Õâ¸öºóÃæ»á½éÉÜ¡£
ÖÁ´ËÎÒÃÇÍê³ÉÁ˵ÚÒ»¸öWindows Phone³ÌÐò£¬ËüºÜ¼òµ¥£¬¿´ÆðÀ´ºÍдһ¸öÆÕͨµÄSilverlight³ÌÐòûÓÐÌ«´óµÄÇø±ð¡£
ËÄ Windows PhoneÏîÄ¿½á¹¹
ÏîÄ¿½¨Á¢ºÃÖ®ºó£¬°üº¬ÁËÒÔÏÂһЩÎļþ£º

AppManifest.xml : ´ËÎļþÖаüº¬Ò»¸ö<Deployment.Parts>µÄ½Úµã¡£Èç¹ûÐèÒªµ÷ÓÃXAPÎļþÖаüº¬µÄÆäËûAssemblyµÄDLLÎļþ£¬¾Í»áÔڴ˽ڵãÏÂÌí¼ÓÒ»¸ö<AssemblyPart/>½ÚµãÀ´ÁоÙÕâЩÎļþ£¬¿ÉÒԲμûÕâÀï¡£
AssemblyInfo.cs : Õâ¸öÎļþ°üº¬Á˶Ե±Ç°³ÌÐò¼¯µÄÐÅÏ¢£¬¿ÉÒÔÔÚÊôÐÔÒ³Ãæ½øÐÐÉèÖÃ
WMAppManifest.xml : Õâ¸öÎļþÖ÷Òª¼Ç¼Á˳ÌÐòµÄÆðÊ¼Ò³Ãæ£¬APPID£¬×÷Õߣ¬Í¼±êÉèÖúͳÌÐò¹¦ÄÜÉèÖá£ÆäÖÐ<Capabilities/>½Úµã¶¨ÒåÁ˳ÌÐòµÄ¹¦ÄÜ£¬±ÈÈçID_CAP_PHONEDIALER±íʾ¿ÉÒÔʹÓõ绰¹¦ÄÜ£¬Èç¹ûûÓÐÕâ¸ö½Úµã£¬µ÷ÓÃÏàÓ¦¹¦ÄÜʱ¾Í»á³ö´í£¬Ïêϸ½éÉܼûÕâÀï¡£Ïà¶ÔÓÚ7.0£¬7.1Ôö¼ÓÁ˶ÔÏà»ú£¬ÁªÏµÈË£¬Ô¼»áÌáÐѹ¦ÄÜ¡£
App.xaml : Õâ¸öÎļþAppÀà¼Ì³ÐÓëApplicationÀ࣬Ëü²¢Ã»ÓпÉÊÓ»¯½çÃæ£¬<Application.Resources/>Ò»°ãÓÃÀ´´æ·Å×ÊÔ´Êý¾Ý¹²È«¾ÖʹÓ᣶ø<Application.ApplicationLifetimeObjects/>½Úµã϶¨ÒåÁËÓëÖ´ÐÐÄ£ÐÍÏà¹ØµÄһЩ·½·¨¡£
App.xaml.cs : AppÀàµÄÁíÒ»²¿·Ö£¬´úÂë°üº¬Á˳ÌÐò³õʼ»¯²Ù×÷ºÍÖ´ÐÐÄ£ÐÍÏà¹ØµÄһЩ·½·¨µÄʵÏÖ¡£
ApplicationIcon.jpg : ÏÔʾÔÚ³ÌÐòÁбíÖеÄͼ±ê£¬´óСΪ62*62
Bcakground.jpg : ÔÚ³ÌÐòÆô¶¯Ê±ÏÔʾµÄͼ±ê£¬´óСΪ173*173s
MainPage.xaml : ³ÌÐòÆô¶¯ºóĬÈÏÏÔʾµÄµÚÒ»¸öÒ³Ãæ£¬Óû§Ò²¿ÉÒÔÔÚWMAppManifest.xmlÖÐÖ¸¶¨Æô¶¯Ò³Ãæ¡£
SplashScreenImage.jpg : ³ÌÐòÆô¶¯Ê±ÏÔʾµÄ»¶Ó½çÃæ£¬´óСΪ480*800£¬Õâ¸öºÍÉ豸Óйء£
ÒÔÉϽéÉÜÁËÒ»¸öWindows PhoneÏîÄ¿µÄ½á¹¹£¬ºÍSilverlight³ÌÐò½á¹¹ºÜÀàËÆ¡£Ö»ÊÇÅäÖÃÎļþÉÏÓÐÐ©Çø±ð¡£
Îå ×ܽá
ÕâÀïÍê³ÉÁËWindows Phone 7.1»·¾³µÄ´î½¨£¬²¢Íê³ÉÁ˵ÚÒ»¸öWindows
Phone³ÌÐò£¬¶ÔÓÚ³ÌÐòÄ£°åºÍÏîÄ¿½á¹¹ÓÐÁËÒ»¸öÈÏʶ¡£ÏÂһƪ½«½éÉÜWindows Phone¿ò¼Ü½á¹¹£¬ÒÔ¼°³ÌÐòÆô¶¯ÔËÐз½Ê½¡£
Windows Phone¿ª·¢£¨¶þ£©-- ¿ò¼Ü½á¹¹ºÍÆô¶¯¹ý³Ì
ÉÏһƪÎÄÕ½éÉÜÁËWindows PhoneµÄ¿ª·¢»·¾³ºÍÒ»¸ö¼òµ¥µÄWindows Phone³ÌÐòµÄÑÝʾºÍ½á¹¹£¬ÕâһƪÎÄÕÂÒªÉîÈëÒ»µã£¬½éÉÜWindows
PhoneµÄ¿ò¼Ü½á¹¹ºÍ³ÌÐòÆô¶¯µÄ¹ý³Ì¡£
Ò» Windows Phone ¿ò¼Ü½á¹¹
ÔÚ½øÐÐWindows Phone¿ª·¢Ö®Ç°ÓбØÒªÁ˽âÒ»ÏÂÕû¸öÈ«ÐÂÆ½Ì¨µÄ½á¹¹¡£¶ÔÓÚWindows
Phoneƽ̨À´Ëµ£¬Çø±ðÓÚ֮ǰµÄWindows Mobileƽ̨×î´óµÄÇø±ðÊÇËûÔËÐл·¾³ÍêÈ«»ùÓÚ.NET¿ò¼Ü£¬ËûÖ»Ö§³ÖÍйܴúÂë½øÐпª·¢¡£

Windows PhoneÊÇ»ùÓÚ.NET Compact Framework¿ò¼Ü£¬ËùÒÔ¾«¼òÁ˺ܶà×ÀÃæ°æµÄ¹¦ÄÜ¡£µ«ÊÇ»¹ÊÇÌṩÁËËùÐèµÄ»ù±¾¹¦ÄÜ¡£ÈçÉÏͼÖеÄ×îϲãµÄÀ¶É«²¿·Ö£¬¾ÍÊÇ.NET
CFÌṩµÄBCLÀà¿â¡£¶øÔÚËûµÄÉϲã¾ÍÊÇApplication Object¡£ÕâÒ»²ã¶¼ÊÇ»ùÓÚ.NET CF¿ò¼Ü¡£ÆäÖаüº¬ÁËÁ½ÖÖ¿ª·¢¿ò¼Ü£º
1.Silverlight Framework £ºÒÔ Silverlight
Framework Ϊ»ù´¡µÄ Windows Phone 7 Ó¦ÓóÌÐòÊÇÓÉÒ»¶ÑµÄ Page (¼Ì³Ð×Ô PhoneApplicationPage
Àà±ðµÄÑÜÉúÀà±ð) ×é³ÉµÄ£¬Ã¿Ò»¸ö Page ÊÇÒ»¸öÀ©Õ¹ÃûΪ .XAML µÄÎļþ£¬´ú±íÒ»¸ö²Ù×÷»Ã棬³ÌÐòÉè¼ÆÊ¦¿ÉÒÔÀûÓÃ
Visual Studio 2010 Express for Windows Phone »òÊÇ Expression
Blend for Windows Phone À´Éè¼Æ Page µÄÓû§½Ó¿Ú¡£WP7.0ÊÇ»ùÓÚSilverlight3.0£¬WP7.1ÔòÊÇ»ùÓÚSilverlight4¡£¹ØÓÚSilverlight
for Windows PhoneºÍSilverlightµÄÇø±ð£¨µã»÷´ò¿ª£©
2.XNA Framework£ºÖ÷ÒªµÄÓÃ;ÔÚÖ§³Ö¿ª·¢ÓÎÏ·³ÌÐò£¬Ìṩ 2D/3D
µÄ¶¯»£¬ÒôЧ£¬¼°¸÷ÖÖÓÎÏ·Ïà¹ØµÄ¹¦ÄÜ£¬ÐÖúÓÐÖ¾ÓÚ¿ª·¢ÓÎÏ·³ÌÐòµÄÆóÒµ»ò¸öÈË·¢Õ¹ Windows Phone¡¢Xbox
360¡¢Zune ²¥·ÅÆ÷¡¢ÒÔ¼° Windows 7 ƽ̨µÄÓÎÏ·³ÌÐò¡£
±Ï¾¹Òƶ¯ÊÖ»úƽ̨»¹ÓÐ×Ô¼ºÌØÊâµÄÒ»²¿·Ö¹¦ÄÜ£¬ËùÒÔÔÚÁ½¸ö¿ò¼ÜµÄÉϲãWindows PhoneÌØÓеÄһЩ¹¦ÄÜ£¬±ÈÈçÏà»ú£¬Windows
Phone¿Ø¼þ£¬¸ÐÓ¦Æ÷£¬¶àµã´¥¿ØÆÁÄ»£¬Launcher£¬ChooserµÈµÈÀ´ÌṩÏàÓ¦¹¦ÄÜ¡£

ËùÒÔ¾ßÌ嵽ʵ¼Ê¿ª·¢£¬ÎÒÃÇÓÐ2Ì׿ª·¢¿ò¼Ü½øÐÐÑ¡Ôñ£¬¶ÔÓÚ´ó¶àÓ¦ÓóÌÐòÎÒÃÇ¿ÉÒÔÑ¡ÔñSilverlight½øÐпª·¢£¬¶ø¶ÔÓÚÓÎÏ·¿ÉÒÔÑ¡ÔñXNA¡£µ«ÊÇWPÒ²Ìṩ²¿·Ö¹¦ÄÜÏ໥µ÷ÓõŦÄÜ¡£¶ø¶ÔÒÔWP7.1À´Ëµ¿ÉÒÔ½¨Á¢Ò»¸ösilverlightºÍXNA¼¯³ÉµÄ¿ª·¢»·¾³£¨µã»÷²é¿´£©¡£

¶ÔÓÚWindows Phone¿ª·¢À´Ëµ£¬²»½ö¿ÉÒÔʹÓÃ.NET CFºÍsilverlight»òXNA¿ò¼ÜÌṩµÄÕâЩ¹¦ÄÜ£¬»¹ÄÜʹÓÃ΢Èí»ùÓÚÔÆ·þÎñµÄһЩ¹¦ÄÜ¡£±ÈÈçNotification£¬Social£¬
Location£¬Map £¬AzureµÈ·þÎñ¡£ÏÂͼÏÔʾÁËWindows PhoneÉÏÖ§³ÖµÄµÄÔËÐÐʱ¿ò¼ÜºÍ¿ª·¢¹¤¾ß¡£ÏÂÃæµÄÏÔʾÌṩµÄÔË·þÎñÒÔ¼°×¢²á¿ª·¢Õߺͷ¢²¼³ÌÐò¡£ËûÃÇ×é³ÉÁ˶ÔWindows
Phone¿ª·¢µÄÈí¼þÖ§³Ö¡£

¶ø¶ÔÓÚÓ²¼þÀ´Ëµ£¬Î¢ÈíͳһÁËÓ²¼þƽ̨£¬Ä¿Ç°ÒªÇóµÄÓ²¼þ°üÀ¨ 800 x 480 »ò 480 x 320 ÆÁÄ»·Ö±æÂÊ£¬Ö§³Ö¶àµã´¥¿Ø£¬ÄÚ½¨
A-GPS ÎÀÐǶ¨Î»ÏµÍ³£¬G-Sensor (Accelerometer)£¬µç×ÓÂÞÅÌ´«¸ÐÆ÷£¬¹âÔ´´«¸ÐÆ÷£¬ÒÔ¼°²»ÐèÒªÖ±½Ó½Ó´¥¾Í¿ÉÒÔÕì²âµ½¸½½üÎïÌåµÄ
Proximity Sensor¡£×îÉÙ 500 Íò»ËصÄÊý×ÖÏà»ú£¬ÄÚ½¨ Codec Óë¶àýÌåÓ°Òô²¥·Å¹¦ÄÜ£¬×îÉÙ
256MB µÄ RAM Óë×îÉÙ 8GB µÄÉÁ´æ£¬GPU (ͼÐδ¦ÀíÆ÷)£¬ARMv7 Cortex/Scorpion
»ò¸ü¼ÑµÄ´¦ÀíÆ÷£¬ÒÔ¼° Back¡¢Start¡¢Search Èý¸öÓ²¼þ°´¼ü¡£Ä¿Ç°HTCºÍÈýÐÇÒѾÓеÚÒ»´úµÄWP7ÊÖ»úÉÏÊУ¬¿ÉÒÔ»úÐͺÍROMÐÅÏ¢¿ÉÒԲμû£ºÖÇ»úÍø
¹ØÓÚWindows Phone PlateformµÄÏêϸ½éÉܲμûMSND£¨µã»÷´ò¿ª£©
¶þ Windows Phone 7.1 й¦ÄÜ
Ŀǰ×îа汾µÄϵͳÊÇWindows Phone 7.1Beta£¬Ïà¶ÔÓÚWindows
PhoneËûÓÐÁ˱ȽϴóµÄ¸Ä¶¯£¬ÅªÇå³þÿһ°æ±¾µÄ¹¦ÄÜ£¬¿ÉÒÔ¸üºÃµÄÁ˽âϵͳºÍÑ¡Ôñ¿ª·¢µÄ°æ±¾¡£
Õ³ÌùºÍ¸´Öƹ¦ÄÜ£º1ÔµĸüÐÂÔö¼ÓÁËÕ³Ìù¸´Öƹ¦ÄÜ
Ö´ÐÐÄ£ÐÍ¿ìËÙÇл»£ºÊµÏÖÁËеÄÖ´ÐÐÄ£ÐÍ£¬Ôö¼ÓÁËÐÝÃß״̬£¬Ê¹µÃÓ¦ÓóÌÐò¿ÉÒÔ¿ìËÙÇл»¡£
ºǫ́³ÌÐò´úÀí£ºÔö¼Óºǫ́´úÀí¹¦ÄÜ£¬¿ÉÒÔÔÚ³ÌÐòûÓÐÔÚǰ̨ÔËÐеÄÇé¿öÏÂÔÚ½øÐÐÌáʾ£¬ÁíÍ⻹Óкǫ́²¥·ÅºÍºǫ́ÏÂÔØ¹¦ÄÜ
¸ÐÓ¦Æ÷APIs£º¹«¿ªÁ˸ÐÓ¦Æ÷µÄAPI£¬ÒÔ±ã³ÌÐò¿ÉÒÔ¶ÔÓ²¼þ½øÐзÃÎÊ¡£
Ö§³ÖSocket£ºÔö¼ÓÁËSocketµÄÖ§³Ö£¬¿ÉÒÔ¿ª·¢»ùÓÚTCPºÍUDPµÄ³ÌÐò£¬·Ç³£ÓÐÓá£
Ïà»úÊý¾Ý£ºÔö¼ÓÁ˶ÔÏà»úÔʼÊý¾Ý·ÃÎʵŦÄÜ
ÍÆËÍÏûÏ¢£ºÔö¼ÓÁËÍÆËÍÏûÏ¢µÄ¹¦ÄÜ£¬¸ü¼ÓÎȶ¨
SilverlightºÍXNA¼¯³É£º¿ÉÒÔÔÚͬһ¸öPageÏÂʹÓÃsilverlightºÍXNA½øÐпª·¢
³ÌÐòÅäÖÃÎļþ£ºÌṩÁ˶ԳÌÐòºÍÓÎÏ·½øÐÐÅäÖõŦÄÜ
WebBrowser £ºä¯ÀÀÆ÷¿Ø¼þ¿ÉÒÔÖ§³ÖIE9£¬²¢ÓÅ»¯ÁËHTML5µÄ±íÏÖ
±¾µØÊý¾Ý¿â£ºÔö¼ÓÁ˶ÔÊý¾Ý¿âµÄÖ§³Ö£¬¿ÉÒÔʹÓÃLINQ to SQL½øÐвÙ×÷
Launchers and Choosers £º ÌṩÁËÐµĹ¦ÄÜ£¬ÈçBing
Map£¬AddressµÈ
È«Çò»¯ºÍ±¾µØ»¯£ºÖ§³Ö°üÀ¨ÖÐÎÄÔÚÄÚµÄ16ÖÖÓïÑÔ
¾ßÌåWindows Phone 7.1еĸĽø£¨µã»÷´ò¿ª£©
¹ØÓÚ³ÌÐòµÄ¼æÈÝÐÔ£¬¼òµ¥ËµWP7.0¿ª·¢µÄ³ÌÐò¿ÉÒÔÔÚOS7.0ºÍ7.1ÉÏÔËÐУ¬¶ø7.1¿ª·ÅµÄ³ÌÐòÔÚ7.0ÉÏ¿ÉÄÜ»áʧ°Ü¡£¾ßÌ弿ÈÝÐÔÎÊÌâ²Î¼ûÕâÀï
Èý Window Phone ³ÌÐòÆô¶¯¹ý³Ì
ÔÚÎÒÃÇÉÏһƪÎÄÕÂÖУ¬ÎÒÃÇдÁËÒ»¸ö¼òµ¥µÄDemo³ÌÐò¡£³ÌÐòÆô¶¯ºóÏÔʾµÄÊÇMainPage.xamlÒ³Ãæ¡£ÄÇô³ÌÐòÊÇÈçºÎ³É¹¦Æô¶¯µÄÄØ£¿
1 xapÎļþ
´ò¿ª³ÌÐòºó£¬ÎÒÃǶԳÌÐò½øÐбàÒ룬ȻºóÎÒÃÇ¿ÉÒÔÔÚ/PhoneApp2/Bin/DebugĿ¼Ï¿´µ½Ãû×ÖΪPhoneApp.xapÎļþ£¬Õâ¸ö¾ÍÊÇÎÒÃdzÌÐòµÄ°ü¡£²¿Êðµ½ÊÖ»úÉϾÍÄÜÔËÐС£ÕâÆäʵÊÇÒ»¸öѹËõÎļþ£¬ÎÒÃÇ¿ÉÒÔÓÃ7-ZIPÀ´½âѹ¡£

ÆäÖаüº¬Á˳ÌÐòʹÓõÄ3¸öJPGÎļþ£¬PhoneApp2.dll¾ÍÊÇÎÒÃdzÌÐò¹¦ÄܵÄDLLÎļþ£¬¶øAppMainfest.xamlºÍWMAppMaingest.xmlÎļþÔòÌṩÁËÓ¦ÓóÌÐòµÄһЩÐÅÏ¢¡£

ÉÏͼÊÇÒ»¸ösilverlightµÄXAP°üµÄ½á¹¹£¬WP»ùÓÚsilverlight¿ª·¢µÄ³ÌÐò½á¹¹ÊÇÏàËÆµÄ£¬²»¹ý¶àÒ»¸öWMAppMaingest.xmlÎļþ£¬ÓÃÀ´ÅäÖÃÊÖ»úÏà¹ØµÄһЩÐÅÏ¢£¬Õâ¸öÔÚÉÏһƪÓнéÉܹý¡£Ê×ÏÈÀ´¿´¿´AppManifest.xaml
Îļþ£¬Ëü±êʶ´ò°üµÄ³ÌÐò¼¯ºÍÓ¦ÓóÌÐòÈë¿Úµã¡£
[xhtml:nogutter:collapse] + expand sourceview plaincopyprint? <Deploymentxmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"EntryPointAssembly=
"PhoneApp2"EntryPointType="PhoneApp2.App"RuntimeVersion="4.7.50308.0"> <Deployment.Parts> <AssemblyPartx:Name="PhoneApp2"Source="PhoneApp2.dll"/> </Deployment.Parts> </Deployment> |
Õâ¸öºÍÉÏһƪÎÄÕÂÏà±È£¬ÒѾ×Ô¶¯Éú³ÉÁËһЩÄÚÈÝ¡£ÎÒÃÇÀ´¼òµ¥¿´Ò»Ï£º
1.EntryPointAssembly £º ¶¨ÒåÁ˳ÌÐòµÄÈë¿Ú³ÌÐò¼¯µÄÃû×Ö£¬Ò²¾ÍÊÇ¿ªÊ¼ÔËÐÐʱ¼ÓÔØµÄ³ÌÐò¼¯£¬ÕâÀï¾ÍÊÇÎÒÃǵÄPhoneApp2.dll
2.EntryPointType £º ±íʾÁ˳ÌÐòµÄÈë¿Úµã£¬ÕâÀïÖ¸¶¨ÁËÏîÄ¿ÖеÄApp¶ÔÏó
3.RuntimeVersion £º ±íʾµ±Ç°silverlightÔËÐеİ汾£¬ÕâÀï¿ÉÒÔ¿´µ½£¬WP7.1ÊÇ»ùÓÚSL4¡£
4.Deployment.Parts £º ´Ë½ÚµãÖаüº¬ÁËxap°üÖеijÌÐò¼¯ÁÐ±í¡£
¹ØÓÚxap°ü½á¹¹ºÍ´ËÎļþ½á¹¹¾ßÌåÐÅÏ¢£¬Ïêϸ¿ÉÒԲο¼silverlightµÄÓ¦ÓóÌÐò½á¹¹¡£¶ÔÓÚWMAppMaingest.xmlÎļþûºÍ±àÒëǰûÓб仯£¬Ïêϸ½á¹¹ÉÏһƪÎÄÕÂÖÐÓÐÁ´½Ó½éÉÜ¡£
2 App.xamlºÍApp.xaml.csÎļþ
AppMaingest.axmlÖж¨ÒåÁ˳ÌÐòµÄÈë¿Úµã£¬ÆäÖÐÖ¸¶¨ÁËApp¶ÔÏó¡£Í¨¹ý²é¿´Õâ2¸öÎļþ£¬ÎÒÃÇ·¢ÏÖApp.xaml.csÎļþÖж¨ÒåÁËAppÀ࣬´ËÀà¼Ì³ÐÓëApplicationÀ࣬¶øApp.xamlÎļþµÄ¸ù½ÚµãApplicationÖ¸¶¨ÁËx:Class="PhoneApp2.App"£¬Õâ¸ö±íʾ°ÑxamlÎļþÖеÄÄÚÈÝͬxaml.csÀàÖÐÄÚÈݺϲ¢¡£ÕâÀïËùÓÐÄÚÈݱàÒëºó»áºÏ²¢µ½AppÀàÖС£
µ±Ê¹Óà Silverlight µÄÍÐ¹Ü API ´´½¨Ó¦ÓóÌÐòʱ£¬±ØÐë´´½¨Ò»¸ö´Ó Application
ÅÉÉúµÄÀà¡£Application ÀàÌṩӦÓóÌÐòͨ³£ÒªÇóµÄÈô¸É·þÎñ¡£ËüÖ÷Òª±íʾӦÓóÌÐò´úÂëÔÚ Silverlight
²å¼þÉúÃüÖÜÆÚÖеÄÈë¿Úµã¡£ApplicationÀàµÄÒÔϹ¦ÄÜ£º
1.Ó¦ÓóÌÐòÉú´æÆÚ¹ÜÀí
2.Ó¦ÓóÌÐò×ÊÔ´Îļþ¼ÓÔØ
3.δ¾´¦ÀíµÄÒì³£´¦Àí
4.À©Õ¹ÐÔ
[xhtml:nogutter:collapse] + expand sourceview plaincopyprint? <Application x:Class="PhoneApp2.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"> <!--Application Resources--> <Application.Resources> </Application.Resources> <Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:PhoneApplicationService Launching="Application_Launching"Closing="Application_Closing" Activated="Application_Activated"Deactivated="Application_Deactivated"/> </Application.ApplicationLifetimeObjects> </Application> |
ÎÒÃÇ¿´µ½App.xamlÎļþÖж¨ÒåÁË<Application.Resources>½Úµç£¬Õâ¸ö¿ÉÒÔÓÃÀ´¶¨ÒåһЩȫ¾ÖµÄ×ÊÔ´±ðÈçstring£¬style£¬±ÊË¢µÈ£»<Application.ApplicationLifetimeObjects>ÔòÊÇÌṩÁ˶ÔApplicationµÄÀ©Õ¹ÐÔ£¬ÕâÀïÌṩÁËPhoneApplivationServiceµÄÀ©Õ¹·þÎñ£¬´ÓÃû×ÖÎÒÃǾÍÄÜÖªµÀÕâ¸öÊÇÓйØPhoneµÄÀ©Õ¹£¬ÒòΪĬÈϵÄSilverlightÊÇûÓеġ£Õâ¸öÊÇλÓÚMicresoft.Phone.dllÖУ¬Õâ¶ù·þÎñÌṩÁË4¸öÓëÊÖ»úÓйصķ½·¨¡£¹ØÓÚÀ©Õ¹ÐÔ¿ÉÒԲμûsilvrlightµÄÀ©Õ¹·þÎñ
[c-sharp] view plaincopyprint? public PhoneApplicationFrame RootFrame {get; privateset; } public App() { UnhandledException += Application_UnhandledException; InitializeComponent(); InitializePhoneApplication(); PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; } |
ÒÔÉÏÊÇApp.xaml.csÎļþÖеĴúÂ룬Ê×Ïȶ¨ÒåÁËÒ»¸öPhoneApplicationFrameÊôÐÔRootFrame£¬ÔÚ¹¹Ô캯ÊýÖж¨ÒåÁËUnhandledExceptionÀ´´¦Àíδ´¦ÀíÒì³££¬ÕâÊÇApplicationµÄÒ»¸ö¹¦ÄÜ£»InitializeComponentÊdzõʼ»¯·½·¨£¬µã»÷F12µ¼º½µ½App.g.i.csÎļþ£¬Õâ¸öÊÇϵͳ×Ô¶¯¸ù¾ÝxamlÉú³ÉµÄ¡£
[c-sharp] view plaincopyprint? public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Windows.Application.LoadComponent
(this,new System.Uri("/PhoneApp2;component/App.xaml", System.UriKind.Relative)); } |
ÕâÀïµ÷ÓÃÁËApplication.LoadComponent·½·¨¡£Õâ¸ö·½·¨µÄ×÷ÓÃÊÇ ¼ÓÔØÎ»ÓÚÖ¸¶¨Í³Ò»×ÊÔ´±êʶ·û
(URI) ´¦µÄ XAML Îļþ£¬²¢½«Æäת»»ÎªÓɸà XAML ÎļþµÄ¸ùÔªËØÖ¸¶¨µÄ¶ÔÏóµÄʵÀý¡£ÕâÀï¾ÍÊÇÉú³ÉAppÀàµÄʵÀý¶ÔÏó¡£ÓÃReflector¿´Ã»ÓдúÂ룬ÎÒÃÇ¿ÉÒÔ¿´¿´SilverlightÖеÄʵÏÖ£º
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? //²¿·Ö´úÂë public staticvoid LoadComponent(object component, Uri resourceLocator) { XcpImports.CheckThread(); Type componentType = null; uint hr = 0; if (IsComponentUri(resourceLocator)) { string partName = null; string assemblyName =null; string assemblyVersion = null; string assemblyKey =null; if (!QuirksMode.ShouldUseSL3Parser()) { ResourceManagerWrapper.GetAssemblyNameAndPart(resourceLocator,
out partName, out assemblyName,out assemblyVersion, out assemblyKey); } if (componentType == null) { componentType = component.GetType(); } UnmanagedMemoryStream resourceForUri = ResourceManagerWrapper.
GetResourceForUri(resourceLocator, componentType)as UnmanagedMemoryStream; if (resourceForUri !=null) { uint length = (uint) resourceForUri.Length; hr = XcpImports.Application_LoadComponent(ManagedObjectReference.
ConditionalWrap(component), resourceLocator.OriginalString, resourceForUri, length, assemblyName); resourceForUri.Close(); } } else { hr = XcpImports.Application_LoadComponent(ManagedObjectReference.
ConditionalWrap(component), resourceLocator.OriginalString,null, 0, string.Empty); } } |
Ê×ÏÈ»ñµÃÁ˳ÌÐò¼¯Ïà¹ØµÄÐÅÏ¢£¬È»ºó»ñµÃUriµÄ×ÊÔ´£¬×îºóXcpImportsÊÇ.NET²¿·Öµ÷ÓÃcore²¿·ÖµÄ½Ó¿Ú£¬core²¿·ÖÊÇÓÃC++±àдµÄCore
presentation framework£¬Ö÷Òª¹¦ÄÜÊÇXAML parser, UI Core, Inputs,
DRM(digital rights management), Media, Deep ZoomµÈ£¬¶àÊýÊÇÐèÖ±½ÓÓë¾ßÌåµÄ²Ù×÷ϵͳAPI´ò½»µÀµÄ¹¦ÄÜ£¨¿ÉÒԲο¼£ºSilverlight
CoreCLR½á¹¹Ç³Îö£©¡£×îÖÕ¼ÓÔØµÄÊÇÒ»¸öApplication_LoadComponentNativeµÄNative·½·¨¡£
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? nternal staticunsafe uint Application_LoadComponent(IManagedPeerBase componentAsDO,
string resourceLocator, UnmanagedMemoryStream stream,uint numBytesToRead, string assemblyString) { if (assemblyString ==null) { assemblyString = string.Empty; } CheckThread(); byte* pXamlStr = (stream != null) ? stream.PositionPointer : null; uint num = Application_LoadComponentNative(JoltHelper.Context,
componentAsDO.NativeObject, (uint) resourceLocator.Length,
resourceLocator, numBytesToRead, pXamlStr, (uint) assemblyString.Length, assemblyString); GC.KeepAlive(componentAsDO); return num; } [SecurityCritical, DllImport("agcore", EntryPoint="Application_LoadComponent")] private staticextern unsafeuint Application_LoadComponentNative(IntPtr pContext,
IntPtr pComponent,uint cUriStringLength, [MarshalAs(UnmanagedType.LPWStr)]string uriString,
uint cXamlStrLength,byte* pXamlStr, uint cAssemblyStrLength,
[MarshalAs(UnmanagedType.LPWStr)]string assemblyStr); |
Õâ¸öʵÀý¿ÉÒÔͨ¹ýApplication.CurrentÊôÐÔ»ñµÃ¡£´ÓÏÂÃæµÄ¹¹Ô캯Êý¿ÉÒÔ¿´³ö£¬_current±»ÉèÖÃΪthis£¬zeroÖ¸ÕëÖ¸ÏòÁËCreateObjectByTypeIndex·½·¨¸ù¾ÝnativeTypeIndex´´½¨µÄApp
native¶ÔÏó¡£¶øÔÚCurrentÖлñµÃ¶ÔÏóʵÀýʱ£¬ÏÈ»ñµÃÕâ¸öÖ¸Õ룬ȻºóEnsureManagedPeer·½·¨Ê¹ÓÃActivator.CreateInstance(type)
´´½¨ÁËApplicationµÄʵÀý¡£
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? internal Application(uint nativeTypeIndex) { _current = this; IntPtr zero = IntPtr.Zero; zero = XcpImports.CreateObjectByTypeIndex(nativeTypeIndex); this.m_nativePtr = new NativeObjectSafeHandle(); this.m_nativePtr.NativeObject = zero; ManagedPeerTable.Add(zero, this); this._coreTypeEventHelper =new CoreTypeEventHelper(); Type type = base.GetType(); uint isCustomType = 0; if (!TypeProxy.IsCoreType(type)) { isCustomType = 1; } XcpImports.NotifyHasManagedPeer(zero, 11, isCustomType); this._hasElevatedPermissions = XcpImports.Application_GetHasElevatedPermissions(); Deployment current = Deployment.Current; this.Starting += new StartupEventHandler(this.Application_Starting); this.Started += new EventHandler(this.Application_Started); this.Exiting += new EventHandler(this.Application_Exiting); this.Exited += new EventHandler(this.Application_Exited); } public static Application Current { [SecuritySafeCritical] get { IntPtr ptr; if (_current != null) { return _current; } XcpImports.Application_GetCurrent(out ptr); if (ptr != IntPtr.Zero) { Application application = (Application)
ManagedPeerTable.EnsureManagedPeer(ptr, 0,typeof(Application)); XcpImports.ReleaseNativeObject(ref ptr); return application; } return null; } } private staticobject EnsureManagedPeer(IntPtr unmanagedPointer,int typeIndex,
Type type, bool preserveManagedObjectReference) { if (unmanagedPointer == IntPtr.Zero) { return null; } object managedPeer = null; if (!TryGetManagedPeer(unmanagedPointer,
preserveManagedObjectReference,out managedPeer)) { XcpImports.CheckThread(); if ((typeIndex == 0) && (type ==null)) { typeIndex = XcpImports.GetNativeTypeIndex(unmanagedPointer); } FrameworkCallbacks.Initialize(); DependencyObject.StaticNativePointer = unmanagedPointer; managedPeer = (typeIndex > 0) ? CoreTypes.GetCoreWrapper(typeIndex) :
(Activator.CreateInstance(type)as IManagedPeerBase); DependencyObject.StaticNativePointer = IntPtr.Zero; } return managedPeer; } |
ÒÔÉÏÊÇSilverlightºÍWindows Phone¶¼ÓеÄÏÂÃæ¿´¿´Windows PhoneÖвÅÓеIJ¿·Ö¡£ÔÚ¹¹Ô캯ÊýÖÐPhoneApplicationService.Current.UserIdleDetectionModeͨ¹ýÀ©Õ¹·þÎñÉ趨ÁËÊÇ·ñ×Ô¶¯¼ì²â¿ÕÏУ¬ÁíÍâÎļþÖаüº¬ÁËLaunching£¬Activated£¬Deactivated£¬ClosingËĸö·½·¨£¬Õâ4¸ö·½·¨ÊǺÍWindows
PhoneÖ´ÐÐÄ£ÐÍÓйصģ¬ºóÃæ»á½éÉÜ¡£ÔÚ¹¹Ô캯ÊýÖл¹ÓÐÒ»¸öInitializePhoneApplication()·½·¨£¬´Ë·½·¨ÊµÏÖÈçÏ¡£
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? private void InitializePhoneApplication() { if (phoneApplicationInitialized) return; RootFrame = new PhoneApplicationFrame(); RootFrame.Navigated += CompleteInitializePhoneApplication; RootFrame.NavigationFailed += RootFrame_NavigationFailed; phoneApplicationInitialized = true; } private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) { if (RootVisual != RootFrame) RootVisual = RootFrame; RootFrame.Navigated -= CompleteInitializePhoneApplication; } |
´Ë·½·¨È·±£Ö»»á±»Ö´ÐÐÒ»´Î£¬Ê×ÏÈÉú³ÉÁËÒ»¸öPhoneApplicationFrame¶ÔÏ󣬱£´æµ½RootFrameÖУ¬È»ºó°ó¶¨ÁËNavigatedʼþ¡£Ò²¾ÍÊÇÔÚFrameµ¼º½Ö®ºóÖ´ÐÐCompleteInitializePhoneApplication¡£´Ë·½·¨ÖаÑRootFrameÉèÖõ½RootVisualÖС£RootVisualÓÃÀ´»ñÈ¡»òÉèÖÃÖ÷ÒªÓ¦ÓóÌÐòÓû§½çÃæ¡£Ö»ÄÜ´Ó´úÂëÉèÖÃRootVisual
ÊôÐÔµÄÖµÒ»´Î¡£
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? public UIElement RootVisual { get { return (XcpImports.Application_GetVisualRoot()as UIElement); } [SecuritySafeCritical] set { XcpImports.CheckThread(); if ((value == null) || !XcpImports.DependencyObject_IsPointerValid(value)) { throw new InvalidOperationException(Resx.GetString("Application_InvalidRootVisual")); } XcpImports.Application_SetVisualRoot(value); this._rootVisual = value; } } |
´úÂë¿ÉÒÔ¿´µ½XcpImports.Application_SetVisualRoot·½·¨£¬ËµÃ÷×îÖÕÒ²»¹Êǽ»¸øÁËCore
presentation frameworkÈ¥´¦Àí£¬¿ªÊ¼ÏÔʾÎÒÃdzÌÐòµÄ½çÃæ¡£
3 ÓëSilverlightÇø±ð
[c-sharp] view plaincopyprint? public App() { this.Startup += this.Application_Startup; this.Exit += this.Application_Exit; this.UnhandledException +=this.Application_UnhandledException; InitializeComponent(); } private void Application_Startup(object sender, StartupEventArgs e) { this.RootVisual = new MainPage(); } |
ÒÔÉÏÊÇSilverlight4³ÌÐòAppÀàµÄ·½·¨¡£ÔÚStartupÖÐÉèÖÃÁËRootVisualΪMainPage£¬ÄÇôÔÚÆô¶¯Ê±¾Í»áÏÔʾMainPage.xamlÒ³Ãæ¡£ÎÒÃÇÖªµÀFrameºÍPageÊÇSilverlightÖÐÓÃÀ´µ¼º½µÄÀà¡£¶øÔÚWindows
PhoneÖÐÔòÊÇʹÓÃPhoneApplicationFrameºÍPhoneApplicationPage£¬ÆäÖÐFrameÊÇÈÝÆ÷¿ØÖƵ¼º½£¬¶øPageÊÇÔÚFrameÖУ¬ÓÃÀ´ÏÔʾÓû§½çÃæ¡£¶ÔÓÚsilverlightÎÒÃÇ¿ÉÒÔ°Ñ´úÂëÐÞ¸ÄΪÀàËÆWindows
PhoneµÄ´úÂ룺
[c-sharp:nogutter:collapse] + expand sourceview plaincopyprint? public Frame RootFrame {get; privateset; } private void Application_Startup(object sender, StartupEventArgs e) { RootFrame = new Frame(); this.RootVisual = RootFrame; RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); //this.RootVisual = new MainPage(); } |
ÎÒÃÇͬÑù¶¨ÒåÒ»¸öRootFrame£¬Éú³ÉÒ»¸öFrame¶ÔÏó£¬ÉèÖõ½RootVisualÉÏ£¬È»ºóͨ¹ýFrameµ¼º½µ½MainPage.xaml¡£½á¹û¿ÉÒÔÕý³£ÏÔʾ£¬µ«ÊÇÈç¹ûÎÒ°ÉNavigate·½·¨×¢Ïúµô£¬½á¹û¿Õ°×£¬Ã»ÓÐÈκÎÏÔʾ¡£µ«ÊÇÎÒÃÇ¿´ÉÏÃæWindows
PhoneÖв¢Ã»Óмûµ½Navigate·½·¨£¬µ«ÊÇ»¹ÊÇÏÔʾÁËMainPage.xaml½çÃæ¡£
4 ÏÔʾµÚÒ»¸ö½çÃæ
ΪʲôûÓе÷ÓÃNavigation»¹ÊÇÏÔʾÁËMainPageÄØ¡£²»ÒªÍü¼ÇÎÒÃÇ»¹ÓÐÒ»¸öÅäÖÃÎļþWMAppMaingest.xml¡£
[xhtml:nogutter:collapse] + expand sourceview plaincopyprint? <Tasks> <DefaultTask Name ="_default"NavigationPage="MainPage.xaml"/> </Tasks> |
ÆäÖÐTask½ÚµãÊÇApplicationϵÄ×ӽڵ㣬ÆäÖÐÓÐÒ»¸öÊôÐÔÊÇNavigationPage£¬MSDN½âÊÍÊÇÕâÀïÊÇÖ¸¶¨Æô¶¯Ê±Òªµ¼º½µ½µÄPageÒ³Ãæ¡£ÎÒÃÇÊÔÊÔ°ÑÕâ¸öÐÞ¸ÄΪPage1.xaml¡£ÔËÐкó·¢ÏÖ£¬³ÌÐòµÚÒ»¸ö½çÃæÏÔʾΪPage1.xaml¡£
[c-sharp] view plaincopyprint? private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) { if (RootVisual != RootFrame) //RootVisual = RootFrame; RootVisual = new MainPage(); RootFrame.Navigated -= CompleteInitializePhoneApplication; } |
È»ºóÎÒÃǼÌÐø×ö¸öÐ޸ģ¬Ö±½Ó°ÑRootVisualÉèÖÃΪMainPage¡£ÔËÐС£¡£½á¹ûÏÔʾµÄÊÇMainPage¡£ËùÒÔ¶ÔÓÚRootVisualÀ´ËµÊÇÉèÖõÚÒ»¸öÏÔʾµÄÔªËØ¡£µ±ÎÒÃÇ´«µÝ¸øËûµÄÊÇÒ»¸öPage»òUserControlʱ£¬ËûÖ±½ÓÏÔʾ´ËÒ³ÃæµÄÄÚÈÝ£»Èç¹û´«µÝÒ»¸öFrameʱ£¬Èç¹ûÉèÖÃÁËSource»òÔòµ÷ÓÃÁËNavigation£¬¾Í»áµ¼º½µ½Ö¸¶¨µÄPageÏÔʾ£¬Èç¹û²»Ö¸¶¨£¬FrameÊÇÒ»¸öÈÝÆ÷£¬Ã»ÓÐÉèÖÃPage¾Í²»»áÏÔʾÈκζ«Î÷£¬ËùÒÔ»á³öÏÖÉÏÃæ¿Õ°×µÄ½á¹û¡£¶ÔÓÚWP7À´Ëµ£¬³ÌÐò´ÓWMAppMaingest.xmlÖÐÅäÖõõ½Ê×Ò³²¢ÉèÖõ½ÁËSourceÖС£
5 Æô¶¯½çÃæ
ÔÚ³ÌÐòÆô¶¯¹ý³ÌÖУ¬»áÖ´ÐÐStartupºÍApplication_Launching·½·¨¡£ÕâÀï¿ÉÄÜÊÇһЩºÄʱ²Ù×÷£¬Èç¹ûʱ¼ä³¬¹ý1S£¬¾ÍÍÆ¼öʹÓÃÆô¶¯½çÃæ£¬¸ÄÉÆÓû§ÌåÑé¡£½¨ÒéÊDz»ÔÚÔÚÆô¶¯¹ý³ÌÖÐ×ö¹ý¶à²Ù×÷£¬ÒòΪÆô¶¯Ê±¼ä³¬¹ý10S³ÌÐò»á±»Ö±½ÓÖÕÖ¹µô¡£
Æô¶¯»ÃæÍ¼Æ¬ÃûΪSplashScreenImage.jpg£¬ÎÒÃÇÔÚÆô¶¯µÄStartup»òÕßApplication_LaunchingÖÐThread.sleep(2000),
À´Ä£ÄâÆô¶¯Ê±µÄºÄʱ²Ù×÷¡£ÕâÑùÆô¶¯½çÃæ¾Í¿ÉÒÔÏÔʾ¡£µ«ÊÇºÜÆæ¹Ö£¬ÎÒÔÚÄ£ÄâÆ÷Éϸù±¾²»»áÏÔʾ£¬È»ºóÏÂÔØÁË΢ÈíµÄÀý×ÓSplash
Screen Sample£¬ÔËÐкóҲûÓÐÏÔʾ³öÀ´¡£²»ÖªµÀʲôÔÒò¡£
ÔÚInitializePhoneApplication·½·¨Öв¢Ã»ÓÐÉèÖÃRootVisual£¬ÕâÊÇΪÁËÈÃÆô¶¯»ÃæÔÚÖ÷½çÃæ×¼±¸³ÊÏÖʱÈÔ¾ÉÓÐЧ¡£ÎÒÃǰÑRootVisual·Åµ½´Ë·½·¨×îºóÒ²ÊÇ¿ÉÐеģ¨ºÍsilverlightÒ»Ñù£©¡£²»¹ýÕâÀïÓе㲻Ã÷°×£¬ÎªÊ²Ã´ÓÃNavigatedʼþ£¬ÊDz»ÊÇÆô¶¯»ÃæÍê³Éºó»áÒý·¢Õâ¸öʼþ£¿
[c-sharp] view plaincopyprint? private void Application_Startup(object sender, StartupEventArgs e) { //this.RootVisual = new Page1(); RootFrame = new Frame(); RootFrame.Navigated += new System.Windows.Navigation.NavigatedEventHandler(RootFrame_Navigated); bool ret = RootFrame.Navigate(new Uri("/Page1.xaml", UriKind.Relative)); //RootFrame.Source = new Uri("/Page1.xaml", UriKind.Relative); } void RootFrame_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { RootFrame.Navigated -= RootFrame_Navigated; this.RootVisual = RootFrame; } |
±ÈÈçÎÒÃǰÉÒ»¸ösilverlightÐ޸ijɺÍWP7ÀàËÆµÄ£¬ÔÚNavigatedÖвÅÉèÖÃVisualRoot£¬ËäÈ»Navigate·½·¨·µ»ØÁËTrue£¬µ«ÊDz¢Ã»Óд¥·¢´Ëʼþ£¬¶ø³ÌÐòÒòΪûÓÐÉèÖÃVisualRootÒ»Ö±Ôڵȴø×´Ì¬Ã»ÓÐÈκÎÏÔʾ¡£ËùÒÔ¶ÔÓÚWindows
PhoneÀ´ËµÒ»¶¨ÊÇ´¥·¢ÁË´Îʼþ£¬µ«ÊÇÈçºÎ´¥·¢µÄĿǰ²»Çå³þ¡£
ÁíÍâÆô¶¯Ê±·½·¨Ö´ÐеÄ˳ÐòÊÇApp()-->Startup()-->Application_Launching();
ËÄ ×ܽá
ÕâһƪÎÄÕ´ó¸Å½éÉÜÁËWindows PhoneµÄ¿ò¼Ü½á¹¹ºÍ7.1°æ±¾µÄһЩ¸üС£È»ºóÉÔ΢ÉîÈëµÄÁ˽âÁËÕû¸ö³ÌÐòµÄÆô¶¯¹ý³ÌÉæ¼°µÄһЩÄÚÈÝÒÔ¼°ºÍSilverligthÖ®¼äµÄÇø±ð¡£×ܵÄÀ´Ëµ¾ÍÊÇËÞÖ÷³ÌÐòͨ¹ýAppMainfest.xamlÀ´»ñÈ¡³ÌÐòµÄÈë¿Úµã£¬È»ºó³õʼ»¯µ÷ÓÃApplication.LoadComponent·½·¨À´Éú³ÉApp¶ÔÏóµÄʵÀý£¬½ÓÏÂÀ´³õʼ»¯ÊÖ»ú£¬¶¨ÒåÒ»¸öFrame£¬£¬Í¨¹ýWMAppMaingest.xmlÎļþ»ñÈ¡Æô¶¯Ê±µÄPageÒ³ÃæÉèÖõ½Frame£¬È»ºóÉèÖõ½RootVisualÀ´ÏÔʾ´ËPage¡£
±¾ÎÄÉæ¼°´úÂë½ÏÉÙ£¬ÔÚÉÏһƪÎÄÕµĴúÂëÉÏÐ޸ļȿɡ£
|