设为首页 收藏本站
查看: 991|回复: 0

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

[复制链接]

尚未签到

发表于 2015-5-20 10:29:18 | 显示全部楼层 |阅读模式
  这节,我们继续上节的一个议程。
  ①添加一个主页
  现在我已经定义了一个ViewModel,我就开始整合项目。第一步就是添加主页到添加到项目中去。我明白项目为何吧页面创建为空白页面,但这个空白的页面起名字叫空白一点儿意义都没有吧,我这里需要给新页面起一个更有意义的页面.原先的空白页面,我已经吧他干掉了。
  鄙人是个贱体,我更喜欢添加一些新的文件夹,使其更加的有层次。因此,我加了一个新的文件夹加做pages。在此文件夹下,我右击我添加了一个叫做list的xaml的文件、
  特别提醒,如果你是xaml的一个新手的话,就非常的总要先理解我在手把手玩转win8开发系列课程(5),(6)讲的那个空白项目的例子。你要明白,在xaml的文件支持迭代的风格来定义控件,并且添加了一些源代码来支持他。并支持用一些样式的定义来减少一定重复的定义。这更加的自愿,就源代码就出现在这里。当然了,我也很难只在文章中讲述纯的xaml语言。
  对于程序,我想做这么一件事,当app加载的时候就加载这个listPage页面,这怎么办了,我需要在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   //构造函数 控件的初始化  
8   public App() {
9      //初始化相应的控件
10       this.InitializeComponent();
11       this.Suspending += OnSuspending;
12     }
13     //开始加载时间
14     protected override void OnLaunched(LaunchActivatedEventArgs args) {
15       if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) {
16         //TODO: Load state from previously suspended application
17       }
18       // Create a Frame to act navigation context and navigate to the first page
19       var rootFrame = new Frame();
20 //首先导航到listPage这个页面    rootFrame.Navigate(typeof(Pages.ListPage));
21       // Place the frame in the current Window and ensure that it is active
22       Window.Current.Content = rootFrame;
23       Window.Current.Activate();
24     }
25     void OnSuspending(object sender, SuspendingEventArgs e) {
26       //TODO: Save application state and stop any background activity
27     }
28   }
29 }
  此时不明白这个类的意思,你也不用慌。在第五章的时候,我会这个类如何对整个生命周期的响应给你们做详细的阐述。
  ②开始编码了
  最明了的原因解释是我为何创建这个项目与你平时创建的项目不同。就是我对listpage.xaml。cs进行了编码。相应的源代码如下:



1 using MetroGrocer.Data;
2 using Windows.UI.Xaml.Controls;
3 using Windows.UI.Xaml.Navigation;
4 namespace MetroGrocer.Pages {
5   public sealed partial class ListPage : Page {
6     //viewmodel 的对象
7 ViewModel viewModel;
8   //构造函数
9   public ListPage() {
10        //viewmodel的实例
11       viewModel = new ViewModel();
12      //添加数据
13       viewModel.StoreList.Add("Whole Foods");
14       viewModel.StoreList.Add("Kroger");
15       viewModel.StoreList.Add("Costco");
16       viewModel.StoreList.Add("Walmart");
17       viewModel.GroceryList.Add(new GroceryItem { Name = "Apples",
18         Quantity = 4, Store = "Whole Foods" });
19       viewModel.GroceryList.Add(new GroceryItem { Name = "Hotdogs",
20         Quantity = 12, Store = "Costco" });
21       viewModel.GroceryList.Add(new GroceryItem { Name = "Soda",
22         Quantity = 2, Store = "Costco" });
23       viewModel.GroceryList.Add(new GroceryItem { Name = "Eggs",
24         Quantity = 12, Store = "Kroger" });
25            this.InitializeComponent();
26    this.DataContext = viewModel;
27     }
28 //导航的事件
29     protected override void OnNavigatedTo(NavigationEventArgs e) {
30     }
31 //改变的索引
32    private void ListSelectionChanged(object sender, SelectionChangedEventArgs e) {
33       viewModel.SelectedItemIndex = groceryList.SelectedIndex;
34     }
35     }
36 }
  构造函数创建了一个新的viewmodel实例,处理许多简单的数据。这个处理了许多数据。在类中最激动人心声明如下:
  this.DataContext = viewModel;示内容在用户界面控件的视图模型。为此,我开始指定数据源。用户控件的DataContext属性是给一个用户界面控件及其所有子控件指定源数据绑定。我使用关键字对其数据进行了绑定。为什么能够这么做了,因为listpage包含所对应的所有对应的xaml的源代码。
  我在最后部分定义的方法是用于处理SelectionChanged事件了。这是一种控件是用来显示项目的购物清单.当我定义xaml的时候,我会让这个方法被调用时,返回用户选择其中的一个项。依据SelectedItem属性,方法中的在viewmodel设置的selectedItem这个属性、由于这个属性是Observable的,当选择的时候,程序也会得到了通知。
  
  这节议程差不多了,如下日程继续吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68813-1-1.html 上篇帖子: 使用Jquery实现Win8开始菜单效果的站点导航 下篇帖子: 手把手玩转win8开发系列课程(5)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表