之前刚刚学了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. Ubuntu通过APT配置开发环境

    apt-get install vim apt-get install ssh apt-get install apache2 apt-get install redis-server apt-get ...

  2. 安装boost1.57.0__注意之前mgiza似乎因为boost没有安装也没有完全编译成功

    首先下载(废话) 解压, ./bootstrap.sh 之后在运行b2 ./b2 -j8 --prefix=$PWD --libdir=$PWD/lib64 --layout=system link= ...

  3. 算法系列4《Luhn》

    Luhn算法由IBM的Hans Peter Luhn发明,又称为"模10"算法,是一种简单的校验和算法,用来验证识别号,一般会被用于身份证号码,信用卡号.IMEI号.社会保险号的验 ...

  4. [目录]Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案

    第一部分:开始 1         ETL入门 1.1   OLTP和数据仓库对比 1.2   ETL是什么 1.2.1          ETL解决方案的演化过程 1.2.2          ET ...

  5. linux kernel 0.11 bootsect

    bootsect作用 ①将自己移动到0x90000处 ②将setup从磁盘读到0x90200处 ③将system从磁盘读到0x10000处 寄存器 汇编代码中存在:数据段data seg 栈段 sta ...

  6. Mybatis动态SQL

    1.动态SQL基本标签 •if •choose (when, otherwise) •trim (where, set) •foreach 2.IF 具体用法 <select id=" ...

  7. Android:ViewPager实现屏幕轮转和使用PagerTabStrip

    ① ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类. ② ViewPager类需要一个PagerAdapter适配器类给它提供数据. ③ Vie ...

  8. poj 2153 Rank List

    原题链接:http://poj.org/problem?id=2153 简单题,map,平衡树均可.. map: #include<algorithm> #include<iostr ...

  9. Golang的iota的特性

    Golang的iota的特性: 1. iota在每个ConstBlock中自动归0. 2. iota在每个ConstSpec后自动增1. 换言之: iota是ConstBlock中ConstSpec的 ...

  10. wpa_supplicant 使用

    (1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...