1, 建立WPF程序,并在程序中添加三个文件View,ViewMoudle,Moudle,

2,Moudle文件加中添加类,此文件夹中存放的类基本为数据类,主要是字段和属性

3 ViewMoudle文件加中添加类,首先添加一个基类作为ViewMoudle中所有类的父类,

这个类继承INotifyPropertyChanged,只用简单实现此接口的事件

代码如下

public class ViewMoudleBase : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged(string propertyname)

{

if (PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(propertyname));

}

}

}

之后,是集成Moudle中的结构类,并在此写逻辑代码,此处只简介绑定的用法

列如Moudle中有个Person类

public class Person

{

private string name;

public string Name

{

get { return name; }

set { name = value; }

}

private int age;

public int Age

{

get { return age; }

set { age = value; }

}

}

我们可以在ViewMoudle中添加一个PageViewModel

public  class PageViewModel:ViewMoudleBase

{

      private ObservableCollection<Person> human = null;

public ObservableCollection<Person> Human

{

get

{

return human;

}

set

{

human = value;

当用list等其他集合是写下面的红色加粗部门,

if (human!=value)

                {

                    human = value;

                    OnPropertyChanged("Human");

                }

}

}

public PageViewModel()

{

human = new ObservableCollection<Person>();

Human.Add( new Person{Name = "Tom",Age = 21 });

Human.Add(new Person { Name = "Jack", Age = 22 });

Human.Add( new Person{Name = "Rose",Age = 23 });

}

}

(注意加粗的地方,如果改为一般的集合例如List类,就不能实现动态的在UI界面添加数       据了,原因是ObservableCollection继承了INotifyPropertyChanged)

4 View中添加窗口,在Xaml页面中通过Bing绑定相应的类以及字段

例如

<DataGrid AutoGenerateColumns="False" Height="200" ItemsSource="{Binding Human}" HorizontalAlignment="Left" Margin="34,20,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="516" Grid.RowSpan="2">

<DataGrid.Columns>

<DataGridTemplateColumn>

<DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<StackPanel>

<TextBlock Height="23" HorizontalAlignment="Left" Name="textBlock1" Text="{Binding Name}" VerticalAlignment="Top" />

<TextBlock Height="23" HorizontalAlignment="Left" Name="textBlock2" Text="{Binding Age}" VerticalAlignment="Top" />

</StackPanel>

</DataTemplate>

</DataGridTemplateColumn.CellTemplate>

</DataGridTemplateColumn>

</DataGrid.Columns>

</DataGrid>

在CS页面实现,通过  DataContext 实现View与ViewMoudle的绑定,

代码如下

public partial class PageView : Window

{

public PageViewModel vm ;

public PageView()

{

InitializeComponent();

vm=new PageViewModel();

vm.Human.Add(new Person { Name = "闪灵", Age = 1 });

DataContext = vm;

}

private void Button_Click(object sender, RoutedEventArgs e)

{

Dispatcher.BeginInvoke(new Action(() =>

{

vm.Human.Add(new Person { Name = "闪灵45", Age = 1 });

}));

}

}

WPF-MVC开发模式简要介绍的更多相关文章

  1. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  2. Extjs 6 MVC开发模式(二)

    1.Extjs MVC开发模式 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs4.x版本中引入了MVC开发模式,开始将 ...

  3. MVC开发模式下的用户角色权限控制

    前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...

  4. MVC开发模式之Servlet+jsp+javaBean

    Servlet+jsp+JavaBean组合开发是一种MVC开发模式,控制器Controller采用Servlet.模型Model采用JavaBean.视图View采用JSP. 1.Web开发的请求- ...

  5. 什么是MVC开发模式以及它和传统开发模式的区别

    Model1模式:使用纯JSP或者JSP+JavaBean开发,存在如下缺陷:JSP页面中混合了HTML和JAVA代码,从而给代码的开发和阅读带 来了麻烦:系统后期维护和扩展非常困难,例如在JSP页面 ...

  6. 【转】EXT JS MVC开发模式

    原文链接:EXT JS MVC开发模式 在app(亦即根目录)文件夹下面创建controller.model.store和view文件夹,从名称上就知道他们该放置什么代码了吧.然后创建Applicat ...

  7. MVC开发模式简述

    了解MVC开发模式,首先我们要了解一下发展趋势 一.什么是软件设计 Jack W.Reeves 于14年前(1992年),就在其撰写的论文——<What is Software Design&g ...

  8. ext.js的mvc开发模式详解

    ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...

  9. MVC开发模式的数据运行流程

    对于java中经典的开发模式MVC,有一些感触!现说一下Java中数据的运行流程,由于我技术有限,有错的话欢迎提出,不喜勿喷! 我们知道在MVC开发模式,包括三部分视图层V(view).控制层C(Co ...

随机推荐

  1. 小窍门:变更Windows Azure Websites自带的node.exe版本

    这几天在玩node.js.Azure Websites天然支持node.js(还支持.net, php和python).   它对nodejs支持的原理是: IIS充当Web服务器,接收所有的请求,而 ...

  2. foj 2150 Fire Game(bfs暴力)

         Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M ...

  3. Android消息推送之GCM方式(二)

    <声明> 转载请保留本来源地址: http://blog.csdn.net/wzg_1987/article/details/9148023 上一节讲了GCM方式实现前的一些必要准备工作, ...

  4. uva 10051 Tower of Cubes(DAG最长路)

    题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...

  5. C# IL 指令集

    跳转指令集合 Public field Static     Beq     如果两个值相等,则将控制转移到目标指令.Public field Static     Beq_S     如果两个值相等 ...

  6. 初识-Android之智能短信项目相关技术整理

    标签页切换采用传统的TabHost: 采用TabActivty实现TabHost. 效果图-后补: 相关技术详解推荐: http://blog.csdn.net/zhouli_05/article/d ...

  7. EBS R12 怎么修改APPS密码

    apps 和 applsys 的口令 $> FNDCPASS apps/<apps password> 0 Y system/<system password> SYST ...

  8. flash Builder JSON使用实例

    flash Builder JSON 使用说明(转载houdinime) XML虽然强大但有人觉得xml不够简洁,编码和解码也有一定难度,于是21世纪初有人发明了JSON编码,相比xml内容少并且容易 ...

  9. OC语法3——点语法,self关键字

    点语法:   为了给程序员提供便捷,OC中也引入了点语法.不过它和Java中点语法的意义是完全不同的. 在Java中无论调用任何方法,还是访问public类型的成员变量都是用点语法(.号). 而在OC ...

  10. 超快速使用docker在本地搭建hadoop分布式集群

    超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...