WindowsPhone7开发31日谈——第1日:项目模板分类:WindowsPhone7开发31日谈WindowsPhone72010-11-0116:266222人阅读评论(4)收藏举报ByJeffBlankenburg在写“WindowsPhone7开发31日谈”系列的首篇文章时,我们需要做一些假设。首先,我假设你懂一些Silverlight的知识。去年我写过一个Silverlight31日谈的系列文章,所以我建议如果没接触过Silverlight你可以从那儿开始学习。本系列中的所有文章都假设你有Silverlight的基础知识。其次,我假设你已经安装了所有所需的工具。你可以在这里找到并下载它们。你需要VisualStudio2010forWindowsPhone和ExpressionBlend4forWindowsPhone。这两个你一定会用到,同时它们完全免费。如果你已经有了这些软件的正式版,它们将会更新这些项目的模板而非在你的机器上添加新的软件。好了,我们开始吧。今天,我们来看看在启动VisualStudio2010时自带的一个默认的WindowsPhone项目模板:WindowsPhoneApplication。SolutionExplorer(解决方案管理器)来看一下默认项目的解决方案管理器。我不准备解释每个文件的所有内容,但我会介绍它们的作用。如果你想看这些内容,安装这些工具来试试!非常简单!(在文章的结尾处我提供了可供下载的项目文件,如果你感觉自己比较懒的话。)ApplicationIcon.png用来代表你程序的图片,你可以用另外的一个来替换这个图片。用户会在他们的程序中将看到此图片。它很重要,一定要设计好。App.xaml这个文件和ASP.NET中的web.config文件很相似。你可以将供整个应用程序使用的数据和设置保存在此处。我也很喜欢将我的样式数据放在此文件中,但这并不是必须的。App.xaml.cs上面那个文件的“代码后置”文件,在这儿你可以处理程序的“墓碑”。我们会在第14天中讲解多任务和墓碑的概念。AppManifest.xml生成应用程序安装包(XAP)所需的一个简单的应用程序清单文件。AssemblyInfo.cs另一个配置文件,它包含了名称和版本的元数据,会被嵌入到生成的程序集文件中。Background.png当你的程序被显示到开始界面中就会显示这个图像。它应该和ApplicationIcon.png一样被精雕细琢。MainPage.xaml你的首个程序页面。几乎在每个项目中,它都不应该成为唯一的页面。电话还可以处理页面间的前后导航,所以你不应该将所有的功能都堆积到一个XAML页面中。把它们分开,以后你会感谢我的。我们会在明天的文章中深度探索页面间导航。MainPage.xaml.cs主页面的“代码后置”文件。当你需要在代码中控制一些行为时,通常在这里进行。与XAML文件中的对象进行交互几乎是必不可少的。在这个系列的文章中会涵盖大量的有关在这个文件(或其他的XAML代码后置文件)中写代码的话题。SplashScreenImage.jpg如果你的应用程序需要花费较长时间来载入时会默认显示此图片。你可以自己选择来替换掉这个图片,但记住这仅仅是让用户知晓他们在等待真正的应用程序载入。WMAppManifest.xml另一个包含了应用程序特定数据的元数据文件,包括标题,图标位置,功能等等。下载代码示例:正如我先前提到的,明天会将页面间导航。再见!WindowsPhone7开发31日谈——第2日:页面导航分类:WindowsPhone7WindowsPhone7开发31日谈2010-11-0120:512902人阅读评论(2)收藏举报ByJeffBlankenburg本文是“WindowsPhone7开发31日谈”系列的第2日。今天,我们来探讨如何在SilverlightforWindowsPhone中进行页面间导航。这非常重要,原因有二:首先,你不会愿意在一个XAML文件中构建整个应用程序。第二,因为下面的原则,你的程序会自动利用手机内建的返回按键。这允许你的用户想返回到之前的操作时可以向前导航。明天我们来深入讨论返回按键。在页面间导航有很多种方法,但是我打算只讲一种。我更喜欢叫它简单Web导航。正如其名,这里采取的方式正如你在HTML页面中导航相似。当然还有一些其他的框架可用(像MVVM),但是本篇文章的目的是讲解这个简单的方法。简单Web导航假设我们有很多页面,并且我们想给用户能在它们之间穿梭的一种方式。先来构建一个简单的导航UI让我们能做以上的事情,现在开始:1)创建一个新的WindowsPhoneApplication。2)添加几个WindowsPhone纵向页面。我们将在第4日讨论页面方向(纵向和横向)。现在只谈纵向。我创建了3个纵向页面:Pasta.xaml,Sauce.xaml和Cheese.xaml。我将用几种不同的方法把它们联系在一起。3)改变页面的标题,以便在页面变更后可以知道所在的位置。当你创建一个新页面时,有一个叫“PageTitle”的XAML元素它默认被设置为“pagename”。在每个页面中都更改这个元素以便于知道你当前处于哪个页面。我喜欢这样做因为可以减少出错的几率。你会发现当你投入精力制作一个项目时起初的代码看起来都很相似,所以让他们看起来有所区别(至少在编码时)会有很大帮助。4)在MainPage.xaml中创建几个超链接(hyperlink)。在页面间建立链接,有几种不同的方式。第一种是全XAML解决方案。为此,我们可以使用超链接按钮(HyperlinkButton)控件。以下是代码:HyperlinkButtonContent=PastaNavigateUri=/Pasta.xamlHeight=30HorizontalAlignment=LeftMargin=10,10,0,0Name=hyperlinkButton1VerticalAlignment=TopWidth=200/HyperlinkButtonContent=SauceNavigateUri=/Sauce.xamlHeight=30HorizontalAlignment=LeftMargin=10,10,0,0Name=hyperlinkButton2VerticalAlignment=TopWidth=200/HyperlinkButtonContent=CheeseNavigateUri=/Cheese.xamlHeight=30HorizontalAlignment=LeftMargin=10,10,0,0Name=hyperlinkButton3VerticalAlignment=TopWidth=200/当你运行项目时,你可以点击任何一个超链接按钮然后跳转到相应的页面中。使用返回键同样可以使你回到上一个界面。如果你返回多次,你会发现一旦越过了程序的第一页你就离开了当前的应用程序。5)通过代码导航到页面。如果你喜欢通过代码而非完全使用XAML,你可以仅仅用一些XAML元素来实现。在本例中,我们使用按钮。我创建了3个按钮,每一个都指向相同的事件处理程序。在下面的C#代码中,你会看到我实际上检测了是哪个按钮被点击了,然后导航至相应的页面。返回键的所有功能仍然可用。XAMLButtonx:Name=PastaButtonContent=PastaClick=Button_ClickWidth=200Height=75/Buttonx:Name=SauceButtonContent=SauceClick=Button_ClickWidth=200Height=75/Buttonx:Name=CheeseButtonContent=CheeseClick=Button_ClickWidth=200Height=75/C#privatevoidButton_Click(objectsender,RoutedEventArgse){ButtonclickedButton=senderasButton;switch(clickedButton.Name){casePastaButton:NavigationService.Navigate(newUri(/Pasta.xaml,UriKind.Relative));break;caseSauceButton:NavigationService.Navigate(newUri(/Sauce.xaml,UriKind.Relative));break;caseCheeseButton:NavigationService.Navigate(newUri(/Cheese.xaml,UriKind.Relative));break;}}正如你看到的,仅仅使用了NavigationService就将用户的动作记录了下来,同时使用返回键就可以使他沿着决策树返回。下载示例代码:明天,我们探索如何利用返回按键来实现更多的功能。WindowsPhone7开发31日谈——第3日:返回键分类:WindowsPhone7WindowsPhone7开发31日谈2010-11-0200:291976人阅读评论(3)收藏举报ByJeffBlankenburg本文是“WindowsPhone7开发31日谈”系列的第3日。昨天,我们讨论了页面导航,以及如何简单的调用NavigationService从而到达程序中的不同页面。简要地提到了返回键,但返回键的复杂性是值得在本系列中单独成文的,主要是因为你可以重写(override)返回键的行为。返回键如何工作和浏览器中的返回按钮很相似。你可以点击它通过会话的决策信息后退。它能让你跨越多个站点,还有这些站点中的每个页面。WindowsPhone中的返回键工作方式与之相同。它能让你回到之前访问过的页面,甚至是跨应用程序!例如,如果我:1.打开人物中心(PeopleHub)。2.在联系人列表中选择“JeffBlankenburg”。3.点击他的家庭地址(使我们进入地图应用程序)。4.点击开始按钮。5.开始游戏。当点击返回键时,会沿着发生的事件列表后退。重写返回键行为是的,你没看错!你可以如你所想重定义返回键的行为。但这不表明允许你通过这种能力做一些不负责任的行为。在任何你想重写返回键行为的时候,你应该确认你所认为的“返回”的意思和你的用户所想的是一样。例如,你打开了一个弹出框,用户的肌肉记忆可能会使他们按下返回键来关闭弹出框。在这种情况下,他们的本意不是离开应用程序,“返回”仅仅意味着摆脱弹出的对话框。另一个例子,如果你有个游戏依赖于计时器或实时动作,使用返回键来暂停游戏就比较合适而非让人立即离开。下面是一些此类事件的指导原则:1.你应该设身处地为用户考虑那一时刻“返回”对他们意味着什么。2.如果再次用户按下返回键,你应该让默认行为执行。3.使用返回键暂停游戏是个非常好的想法,但再按一次意味着他们真的想返回到前面,那就得让他们能后退。这是在WindowsPhone中重写返回键的代码:protectedoverridevoidOnBackKeyPress(System.ComponentModel.CancelEventArgse){//你自己的代码。认真负责些。e.Cancel=true;//取消默认行为。}明天我们讨论设备的方向以及如何在程序中处理横纵方向问题。WindowsPhone7开发31日谈——第4日:设备方向分类:WindowsPhone7WindowsPhone7开发31日谈2010-11-0216:201721人阅读评论(1)收藏举报ByJeffBlankenburg本文是“WindowsPhone7开发31日谈”系列的第4日。昨天我们讨论了WindowsPhone的一个专用硬件按钮——返回键.今天我们聚焦另一个硬件特