之前刚刚学了asp.net网站的三层架构,为其中的优点着迷,可惜寒假本来决定学下MVC的计划泡汤了,刚开学,学了下windows phone 的MVVM模式的开发,在此留下点心得和脚印,第一天只是学了简单的数据绑定,接下来再学学Command的实现,MVVM模式也就是View,Model和ViewModel这三层,具体的关系自己百度,我也不大懂,只知道和之前学的三层差不多,所以领悟还是有点快的吧,哈哈。

其中我学习过程源码的下载地址为:http://files.cnblogs.com/xmfdsh/MVVMtest.rar

好吧,一个个来,首先当然是model层啦,这个就不解释了,直接上代码

namespace MVVMtest.Model
{
    public class Student
    {
        //学号
        public string number { get; set; }
        //姓名
        public string name { get; set; }
        //专业
        public string major { get; set; }

    }
}

上面那个真的就不解释了,因为没什么要解释,如果这个不懂还是了解下三层吧,不过直接学MVVM一样可以我觉得,接下来就是ViewModel层,这个层个人觉得和网站的一些业务逻辑层差不多,第一天我就弄个了简单的

namespace MVVMtest.ViewModel
{
    public class StudentViewModel
    {        //学生的集合,ObservableCollection这个东西和C#中泛型一样,只不过应该是用在windows phone里面的吧,应该,因为别的地方我没见过,学MVVM第一次遇到
        private ObservableCollection<Student> myList;        //集合属性
        public ObservableCollection<Student> MyList
        {
            get
            {
                if (myList == null)
                    myList = new ObservableCollection<Student>();
                return myList;
            }
            set
            {
                if (myList != value)
                {
                    myList = value;
                    NotifyPropertyChanged("MyList");
                }
            }
        }

        //初始化ViewModel层,赋值,这里的赋值可以用函数去赋值,灵活处理自己改啦
        public StudentViewModel()
        {
            try
            {
                Student item = ", name = "小红", major = "软件工程" };
                Student item1 = ", name = "小红", major = "软件工程" };
                Student item2 = ", name = "小白", major = "网络工程" };
                Student item3 = ", name = "小黑", major = "经济管理" };
                Student item4 = ", name = "小灰", major = "计算机技术" };
                MyList.Add(item);
                MyList.Add(item1);
                MyList.Add(item2);
                MyList.Add(item3);
                MyList.Add(item4);
            }
            catch(Exception e)
            {
                System.Windows.MessageBox.Show("EXCEPTION:" + e.Message);
            }
        }
        //定义属性改变事件
        public event PropertyChangedEventHandler PropertyChanged;//这个是监督变量的事件,个人觉得比较重要,可以深入了解下
        //实现属性改变的事件
        public void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}

接下来就是View层了,这个就是视图的意思嘛,好,直接上一个.xaml页面文件,随便弄个了不怎么好看的,哈哈,见谅

<Grid x:Name=" Margin="12,0,12,0">
            <ListBox x:Name="listBox" HorizontalAlignment="Stretch" ItemsSource="{Binding MyList}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation=">
                            <TextBlock Text="></TextBlock>
                            <TextBlock Text="></TextBlock>
                            <TextBlock Text="></TextBlock>

                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

        </Grid>

当然啦,这个.xaml文件的上面就不要忘记这些东东

    xmlns:my="clr-namespace:MVVMtest.ViewModel"
   。   。   。

    <phone:PhoneApplicationPage.Resources>
        <my:StudentViewModel x:Key="student"></my:StudentViewModel>
    </phone:PhoneApplicationPage.Resources>

第一天的简单讲解也就到这里了,上面有源码地址,大家可以学习交流哦,我也刚入门的说。。。。

windows phone MVVM开发心得第一天的更多相关文章

  1. 菜鸟学Windows Phone 8开发(1)——创建第一个应用程序

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力(因为打算每天翻译一篇,但是发现翻译这篇花费了 ...

  2. 安卓版App开发心得

    从2016年4月到6月主要做的工作是网站的开发,而6月到现在2016年8月初,主要做的工作是Android和IOS两种App的开发,又以Android为主. 将这段时间的Android开发心得记录如下 ...

  3. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  4. windows phone 8 开发系列(二)Hello Wp8!

    上篇我们了解了WP8的环境搭建,从今天开始,我们就正式进入WP8的设计,开发阶段. 一. 项目模板介绍 打开vs,选择Windows Phone的项目模板,我们发现如下有很多模板,那么我们就从认识这些 ...

  5. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  6. 【本人译作推荐】Windows 8应用开发:C#和XAML卷(原名:Building Windows 8 Apps with C# and XAML)

    [图书推荐] 译名:Windows 8应用开发:C#和XAML卷 原名:Building Windows 8 Apps with C# and XAML   编辑推荐 国内第一本使用XAML与C#语言 ...

  7. 《Windows IoT 应用开发指南》

    物物互联的时代已经到来,智能家居.智慧校园.智慧交通.可穿戴.无人机.全息投影,各种各样的新名词.黑科技层出不穷.当我们为五年前能够通过手机控制家电而欣喜若狂的时候,可曾憧憬过当前使用增强现实设备完成 ...

  8. Windows phone应用开发[22]-再谈下拉刷新

    几周之前在博客更新一篇Windows phone应用开发[18]-下拉刷新 博文,有很多人在微博和博客评论中提到了很多问题.其实在实际项目中我基于这篇博文提出解决问题思路优化了这个解决方案.为了能够详 ...

  9. Windows phone应用开发[21]-图片性能优化

    在windows phone 中常在列表中会常包含比较丰富文字和图片混排数据信息. 针对列表数据中除了谈到listbox等控件自身数据虚拟化问题外.虽然wp硬件设备随着SDK 8.0 发布得到应用可使 ...

随机推荐

  1. WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法

    写Android程序的时候一般用WindowManager就是去获得屏幕的宽和高,来布局一些小的东西.基本上没有怎么看他的其他的接口. 这两天想写一个简单的类似于Toast的东西,自定义布局,突然发现 ...

  2. U盘启动

    2014.4.3修改 其实用U盘制作系统也可以下载一个软碟通UltraISO,就可以很方便的制作. ----以前的版本 用U盘装系统,很方便快捷,下面这个网站介绍的比较详细,于是自己整理了一下,作为收 ...

  3. psd图片到html

    正确的做法是:拿到psd后,先不要做别的,直接在文本编辑器中将网页的框架写出来,不要假设这块将来css要去怎么渲染,完全自然化的标签,不加任何的css.写完之后在各个浏览器运行之后确保大体定位都没有问 ...

  4. 一个自定义的C#数据库操作基础类 SqlHelper

    SqlHelper其实是我们自己编写的一个类,使用这个类目的就是让使用者更方便.更安全的对数据库的操作,既是除了在SqlHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的 ...

  5. MySQL性能优化笔记整理

    一.测试篇 1.测试目的,就是量化找出短板(基础参数配置) 2.测试三大指标 IOPS:每秒处理的IO请求数,即IO响应速度(注意和IO吞吐量的区别) QPS:每秒请求(查询)次数 TPS:每秒事务数 ...

  6. 共享内存shared pool (3):Library cache

    Shared pool物理层面上由许多内存块(chunck)组成.从逻辑功能划分,Shared pool主要由三部分组成:Library cache,Dictionary cache和Control ...

  7. 第三章 管理程序流(In .net4.5) 之 实现程序流

    1. 概述 本章内容包括 布尔表达式.流控制方式.集合遍历 以及 流跳转. 2. 主要内容 *由于该章内容比较基础,日常用的也很多,故对一些常用的基础内容不再赘述. 2.1 使用布尔表达式 熟悉下列比 ...

  8. jquery Mobile应用第2课《构建跨平台APP:jQuery Mobile移动应用实战》连载二(简单的QWER键盘)

    在jQuery Mobile的布局中,控件大多都是单独占据页面中的一行,按钮自然也不例外,但是仍然有一些方法能够让多个按钮组成一行,比如说在范例6-5中就利用按钮分组的方法使4个按钮并列在一行中,如图 ...

  9. python 校招信息爬虫程序

    发现一个爬虫程序,正在学习中: https://github.com/lizherui/spider_python

  10. memcached 高级机制(二)

    memcached删除机制 a) (1)有内存机制里说明了,这里会运用到LRU删除机制.我们知道,当我们在add或set一个值时,我们会设置这个值得期限.当某个值过期后,这个值并没有从内存中删除,我们 ...