WPF MVVM 架构 Step By Step(4)(添加bindings - 完全去掉后台代码)
2016-07-28 00:59
603 查看
之前的改进已经挺棒的,但是我们现在知道了后台代码的问题,那是否可能把后台代码全部去除呢?这时候就该WPF binding 和 commands 来做的事情了。
WPF就是以超吊的binding,commans和声明式编程而闻名的。声明式编程意思就是相比于全部用C#代码来写,我们也可以用XAML来表示c#代码。Binding可以帮助我们把2个不同的WPF对象连接起来来发送和接收数据。
你看到现在的映射C#代码有3个步骤:
引入:首先要做的第一件事情就是引入CustomerViewModel命名空间。
创建对象:第二件事情是我们创建一个CustomerViewModel类的对象。
绑定代码:最后我们把WPF UI和view model对象绑定在一起。
下面是一个用来展示C#代码和XAML代码的表格
你不需要去写后台的绑定代码,我们可以选择一个UI元素,按F4再去选择所要绑定的属性,这个步骤会把代码插入到XAML里面去,当然也可以自己手写。
指定映射的时候你可以选择StaticResource然后指定在view model和UI元素之间的绑定。
如果你去看xaml.cs中的后台代码,你会发现根本没有任何GLUE代码,也没有转换和映射的代码。唯一有的代码只有WPF用来初始化WPF UI的规范代码。
WPF就是以超吊的binding,commans和声明式编程而闻名的。声明式编程意思就是相比于全部用C#代码来写,我们也可以用XAML来表示c#代码。Binding可以帮助我们把2个不同的WPF对象连接起来来发送和接收数据。
你看到现在的映射C#代码有3个步骤:
引入:首先要做的第一件事情就是引入CustomerViewModel命名空间。
创建对象:第二件事情是我们创建一个CustomerViewModel类的对象。
绑定代码:最后我们把WPF UI和view model对象绑定在一起。
下面是一个用来展示C#代码和XAML代码的表格
Import | C# code | XAML code |
Import | using CustomerViewModel; | xmlns:custns="clr- namespace:CustomerViewModel;assembly=Custo merViewModel" |
Create object | CustomerViewModelobj = new CustomerViewModel(); obj.CustomerName = "Shiv"; obj.Amount = 2000; obj.Married = "Married"; | <Window.Resources> <custns:CustomerViewModel x:Key="custviewobj" TxtCustomerName="Shiv" TxtAmount="1000" IsMarried=”true”/> |
Bind | lblName.Content = o.CustomerName; | <Label x:Name="lblName" Content="{Binding TxtCustomerName, Source={StaticResourcecustviewobj}}"/> |
指定映射的时候你可以选择StaticResource然后指定在view model和UI元素之间的绑定。
如果你去看xaml.cs中的后台代码,你会发现根本没有任何GLUE代码,也没有转换和映射的代码。唯一有的代码只有WPF用来初始化WPF UI的规范代码。
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } }
相关文章推荐
- WPF MVVM 架构 Step By Step(3)(把后台代码移到一个类中)
- SEO新手迷惘期:接手一个网站要如何优化?
- 大型网站分布式缓存技术
- pecamaker+corosync高可用集群的搭建
- lvs+keepalived负载均衡高可用集群的配置
- heartbeat+lvs搭建负载均衡高可用集群
- 单点系统的高可用与性能优化
- 应用云化技术架构
- 104.iOS架构模式(MVC/MVCS/MVP/MVVM/VIPER)
- 深度学习的方法、书籍、资料、网站
- 实习小记一:RESTful架构理解入门
- 分布式控制系统Git学习网站
- ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
- 银联的跨行清算体系架构分析
- 架构图
- 【分享】分享一个压缩 PNG 的网站 TinyPNG
- 网站流量突然下降应该怎么找原因?
- 网站流量突然下降应该怎么找原因?
- Kafka剖析(一):Kafka背景及架构介绍
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能