手把手玩转win8开发系列课程(5)

  前面第三节,我们对ui层大一统的技术——xaml技术有了一个概览。

  这节中的我们正式以一个项目——食品管理程序从头到尾的开发的过程,来真真正正手把手进行win8开发。别看这是简简单单的项目,麻雀虽小,能够学win8的开发的方方面面——数据的绑定,各种各样的控件和xaml样式的引用等等。

  在下图1,你会看到这个项目最终运行的效果(在模拟器中运行的)。

项目的开篇介绍。

针对项目,首先,可以肯定告诉大家我写的这个项目的内容是针对程序猿们而不是对于这些设计妹妹,而且这个食品管理器不是一个完整的程序,非常抱歉,我甚至没有把所有的功能实现。只是通过这个程序展示了背后源代码实现。如果你是一名的设计人员,我这些内容对你来说可能是一坨shit。

以后内容,是不是有许许多多的源代码?.

那确实,对于这些源代码我确定是可以运行,并且进行优化过的,具有一定的可读性。 对于项目的介绍,我是这么做的,当我开始的新的一节时候或是发生了大的变化之时,我会把所有的xaml和C#源代码都统统的展示出来。当我源代码与上文只发生过小小的变动的之时或是用来强调关键源代码的时候,我只会展示其中的改动代码部分和高亮显示xaml中很重要的变化。对于最终源代码介绍效果如下所示,有注释有源码

1  protected override void OnLaunched(LaunchActivatedEventArgs args) {
 2    if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) {
 3       //TODO: Load state from previously suspended application
 4     }
 5     // Create a Frame to act navigation context and navigate to the first page
 6     var rootFrame = new Frame();
 7     rootFrame.Navigate(typeof(Pages.MainPage));
 8    // Place the frame in the current Window and ensure that it is active
 9     Window.Current.Content = rootFrame;
10    Window.Current.Activate();

介绍项目的基本架构

在这部分内容,我将通过一个简单的例子(食品管理程序)空白过程来告诉大家vs各工程中所包括的元素,我这样一步步分解项目来阐述的目的,是倘若你是一个的初学者,也能跟上我的进度。

创立这个例子,你只需要在在vs中选择文件新建工程,在新建工程对话框中,你选择C#windows应用商店程序→空白程序(这种做法在手把手玩转win8开发系列课程(1))中说到过。具体情况,如图2所示:

这里注意啊,.net有许多现成的模板,但花里胡哨的,我不喜欢。原生态才是最好的。

下图展示了在vs的解决方案浏览器的内容,在这部分内容中,我可以肯定的告诉大家,这些文件及其目录是整个项目最重要。

温馨提示,你如果对这些文件的内容和目的不要清楚你也不要特别的担心,我将会在以后的内容对这个的例子解码的面面俱到,在这节中,我只是使你对整个的项目的文件如何柔和在一起有一个整体的印象就可以了。

 温馨提示, 这里开发metroapp的.netframework是一个阉割的精简版.nerframe work.而且在解决方案资源管理器中,你可以过双击来查看哪些能用命名空间其引用。

 我们这里先揭秘一下app.xaml 文件,如果是 asp.net程序员,就应该熟悉这个web.config文件,文件就类似与web.config文件。应该就熟悉了。

app文件和app.cs文件是干什么啊?他是用于启动Metro 程序的。xaml文件的主要是把StandardStyles.xaml加载在程序中,app.xaml源代码显示如下:

 1 using Windows.ApplicationModel;
 2 using Windows.ApplicationModel.Activation;
 3 using Windows.UI.Xaml;
 4 using Windows.UI.Xaml.Controls;
 5 namespace MetroGrocer {
 6   sealed partial class App : Application {
 7     public App() {
 8       this.InitializeComponent();
 9       this.Suspending += OnSuspending;
10     }
11     protected override void OnLaunched(LaunchActivatedEventArgs args) {
12       if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) {
13         //TODO: Load state from previously suspended application
14       }
15       // Create a Frame to act navigation context and navigate to the first page
16    var rootFrame = new Frame();
17    rootFrame.Navigate(typeof(BlankPage));
18    // Place the frame in the current Window and ensure that it is active
19    Window.Current.Content = rootFrame;
20    Window.Current.Activate();
21     }
22     void OnSuspending(object sender, SuspendingEventArgs e) {
23       //TODO: Save application state and stop any background activity
24     }
25   }
26 }

对于StandardStyles.xaml这里,我不用太多了篇幅来赘述,至于什么样的原因吗?主要在以后的章节中,我会做详细的介绍。我们发现app.xaml.cs里面的内容更加有趣,在这里我可以定义了许多资源字典在里面,他的源代码如下:

 1 <Application
 2   x:Class="MetroGrocer.App"
 3   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5   xmlns:local="using:MetroGrocer">
 6   <Application.Resources>
 7     <ResourceDictionary>
 8  <ResourceDictionary.MergedDictionaries>
 9     <ResourceDictionary Source="Common/StandardStyles.xaml"/>
10       </ResourceDictionary.MergedDictionaries>
11     </ResourceDictionary>
12   </Application.Resources>
13 </Application>

metro apps有一个特别完全的生命周期的模型,这个app.xaml.cs文件记录了相应这些东西。明白他们的生命周期是对我们非常重要,我们在以后的内容会详细的介绍。在这节中,你只需要了解在加载(OnLauched)的方法中所做的就是创建一个blankpage的实例,整个程序由此开始就ok了。

特别提醒,为简单起见,我已经删除了绝大多数的注释和屏蔽了大多数的一些命名空间中无用的源代码。

解码blankpage.xaml文件

这个网页是metro app的基本模块。当你创建一个项目,使用空白应用模板,vs会自动给你创建一个空白页,默认起名叫blankPage面。相应的源代码如下所示:

1 <Page
 2   x:Class="MetroGrocer.BlankPage"
 3   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5   xmlns:local="using:MetroGrocer"
 6   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8   mc:Ignorable="d">
 9   <Grid Background="{StaticResource ApplicationPageBackgroundBrush}">
10   </Grid>
11 </Page>

倘若你前面对xaml技术有所了解的话,你会认识列表控件(Grid)的。win8 metro UI的模式下的页面也会像silverlight与wpf一样自动产生这些源代码,并且有界面的架构。对于这里产生的源代码只不过没有他们那么雍总,这是因为干掉了silverlight中页面自动生成的高级布局和无用的数据绑定的xaml源代码,在接下来中,我会创建更加复杂的页面,开始那个食品管理程序的编写。倘若你有编写xaml的经验,至于blankpage.xaml源代码后置的页面的c#源代码你也不会太陌生吧!源代码如下所示:

 1 using Windows.UI.Xaml.Controls;
 2 using Windows.UI.Xaml.Navigation;
 3 namespace MetroGrocer {
 4   public sealed partial class BlankPage : Page {
 5     public BlankPage() {
 6       this.InitializeComponent();
 7     }
 8     protected override void OnNavigatedTo(NavigationEventArgs e) {
 9     }
10   }
11 }

这节,我们揭秘了过程中的app。xaml页面 和blank。xaml页面,夜已经静悄悄的,揭秘的过程,明天继续。

时间: 2024-10-14 23:10:42

手把手玩转win8开发系列课程(5)的相关文章

手把手玩转win8开发系列课程(23)

这节,我们来讨论①像程序中添加最复杂的flyout控件②创建包装类 (1)像程序中添加最复杂的flyout控件 手把手玩转win8开发系列课程(21)的时候了,我们已经把一个简单的FlyOut的文件添加到了项目中,我们觉得还不够,因此了,上节我们创建了一个复杂的控件.于是,我们来将其添加到项目中去,下列是添加这个控件的源码: 1 <!--flyouts 命名空间 指向MetroGrocer.Flyouts--> 2 <flyouts:HomeZipCodeFlyout x:Name=&q

手把手玩转win8开发系列课程(8)

这节,我们继续上节的一个议程. ①添加一个主页 现在我已经定义了一个ViewModel,我就开始整合项目.第一步就是添加主页到添加到项目中去.我明白项目为何吧页面创建为空白页面,但这个空白的页面起名字叫空白一点儿意义都没有吧,我这里需要给新页面起一个更有意义的页面.原先的空白页面,我已经吧他干掉了. 鄙人是个贱体,我更喜欢添加一些新的文件夹,使其更加的有层次.因此,我加了一个新的文件夹加做pages.在此文件夹下,我右击我添加了一个叫做list的xaml的文件. 特别提醒,如果你是xaml的一个

手把手玩转win8开发系列课程(1)

win8操作系统推出一个多月了,我做win8开发也有2个多月了,也写了不少wi8开发的游戏开发的博文(这一系列我会继续的更新),在这里我准备重新推出一套win8的手把手的教程,来帮助更多人,走入win8开发的阵营. 这里我们做好一些win8前期的工作,安装win8及其对win8进行一些介绍.   Win8是由微软公司开发的,具有革命性变化的操作系统.该系统旨在让人们的日常电脑操作更加简单和快捷,主要是针对平板电脑等新一代的移动互联网操作系统,是为人们提供高效易行的工作环境Win8支持来自Inte

手把手玩转win8开发系列课程(2)

 对win8开发,上一节我们对win8进行了简单的介绍,这一节我们来瞧一瞧他的开发环境搭建.    前奏. 这里所讲的win8开发,主要是指Windows8 app store 上开发,及metro ui或叫morden ui 程序的开发.传统桌面应用程序,网站应用程序的win8开发和在win7,xp下一模一样,这里就不多做过多的赘述. 这里的开发运行环境必须是Windows8,开发工具可以用vs2012 express 版本,注意这里只能开发Windows8 app store的应用程序,下载

手把手玩转win8开发系列课程(3)

上节,我们已经搭建了他的开发环境,这节,我们对UI层大一统的技术--XAML技术进行一个概览. 先来搞清楚什么是XAML?所谓XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言.  特别提醒,xaml中含有ML两个字,因此可以看出来他属于ML(mark Language)家族,这里有必要揭秘一下他的前世今生.      在xaml出现之前,微软技术的

手把手玩转win8开发系列课程(4)

上节我们说的windows8开发主要是研究开发windowsstore程序,那么我们这节重点讨论了windows store 究竟是何物?为什么平板电脑都有什么store?并且对这几个成熟的windows store程序进行简单的演示,从而比较win8平板电脑与其他的平板电脑有什么独特的地方. windows store 程序就是软件的开发者开发好了一个程序以后,只有且必须把相应的程序上传到微软的官方市场上,才能够让大庭广众使用.为什么会推出了这种机制了.这就有必要与现在的pc的程序安装来比较.

手把手玩转win8开发系列课程(6)

这节,揭秘工程继续. 揭秘 StandardStyles.xaml文件. common文件下所包括项目中要所使用各种各样的模板文件.如图所示: 别看这么多文件了,我这里关心StandardStyles.xaml文件,他有什么作用了,最明显的作用是这个文件包含了app.xaml中所引用的一些资源字典的数据.这些数据有究竟是什么了,我问你你看到的metro风格的窗体是哪儿规定,就是来自StandardStyles.xaml文件定义的各种各样的样式.你如果对xaml有所了解的话,一定对xaml中样式不

手把手玩转win8开发系列课程(28)

这节,我们讨论两个主题 ①打破视图 ②使用瓦片和徽章来更好的用户体验 如果你把断裂视图呈现给用户,你可以恢复到一个更广泛的布局时,与用户交互的应用在某些方面.为了证明这个道理,  我添加一个按钮到viewPage页面上.下列的源代码所示: 1 <StackPanel x:Name="TopRight" Background="#70a524" Grid.Column="1" 2 Grid.Row="0"> 3 &l

手把手玩转win8开发系列课程(27)

这节,我们讨论两个主题 ①打破视图 ②使用瓦片和徽章来更好的用户体验 如果你把断裂视图呈现给用户,你可以恢复到一个更广泛的布局时,与用户交互的应用在某些方面.为了证明这个道理,  我添加一个按钮到viewPage页面上.下列的源代码所示: 1 <StackPanel x:Name="TopRight" Background="#70a524" Grid.Column="1" 2 Grid.Row="0"> 3 &l