zoukankan      html  css  js  c++  java
  • 二、Silverlight中使用MVVM(二)——提高

    第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知识的,当然整个例子学完后,我们会回过头探讨一下,将其总结出来。

    现在我们主要在前面的示例上进行扩展,前面的示例中我们主要是将一个源对象绑定到DataGrid中的,接下来我们继续使用MVVM模式,将DataGrid选择行的变化体现界面中,其实通过这个需求变化,你会发现UI与逻辑分离带来的优势,尽管才开始似乎有点不习惯,但是相信你会不自觉的在项目倾向于中使用MVVM模式。

          需求:通过单击DataGrid,将当前的选择行的数据反映到TextBox中。

          Model未发生变化,我们还用前面的Person.cs和Persons.cs两个类,那么对于ViewModel,我们给其增加一个属性

            private Person _getOnePerson;
            public Person GetOnePerson
            {
                get { return _getOnePerson; }
                set { _getOnePerson = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("GetOnePerson"));
                }
                }
            }

          因为这里的属性将发生变化,所以我们对PageViewModel类实现了INotifyPropertyChanged借口

          UI层: 这里我们将GetOnePerson属性绑定到DataGrid的SelectedItem属性上

            <data:DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Human}" 
             SelectedItem="{Binding GetOnePerson,Mode=TwoWay}"
            Height="200"  Name="dataGrid1" VerticalAlignment="Top" />
            <TextBox Text="{Binding GetOnePerson.age,Mode=OneWay}" 
            Name="textBox1" VerticalAlignment="Top" Width="120" />
            <TextBox Text="{Binding GetOnePerson.name,Mode=OneWay}" 
            Name="textBox2" VerticalAlignment="Top" Width="120" />

         我们在UI上增加了2个TextBox,用于反映页面上的变化,主要就是注意一下Binding的对象

          这些都完成后,其它部分就不用改动了,我们已经完成了这个功能,我们可以看看页面的效果:                                                                               

                                             

                                                             单击前后的变化             

    功能虽较为简单,但是刚接触MVVM时, 要很顺利的实现也不算是一件容易的事情,后面我会在这个例子的基础上,通过使用Command实现一个较简单的查询。

  • 相关阅读:
    Yahoo! 35条网站性能优化建议
    常见排序
    文件上传于拖拽
    离线web存储
    【前端学习】【jQuery选择器】
    【前端学习】【CSS选择器】
    【疯狂Java讲义学习笔记】【流程控制与数组】
    【疯狂Java讲义学习笔记】【数据类型与运算符】
    【疯狂Java学习笔记】【理解面向对象】
    【疯狂Java学习笔记】【第一章:Java语言概述】
  • 原文地址:https://www.cnblogs.com/liuguanghai/p/3225975.html
Copyright © 2011-2022 走看看