微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight中使用MVVM(2)—提高

 在第一篇文章中的示例中,我们已经简单的了解了应用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}" 
"textBox1" "Top" Width="120" "{Binding GetonePerson.name,255)">"textBox2" />

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

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

捕获

                                                                      

                                          

捕获

 

                                                         单击前后的变化             

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐