zoukankan      html  css  js  c++  java
  • MVVMLight绑定数据

      我们先新建一个WPF项目MVVMLightDemo,添加GalaSoft.MvvmLight.dll(没有可以自己下载)

      

      然后在项目中添加三个文件夹,如图:

        

      先添加我们的Model,在Model下新建一个类Student

      

    using GalaSoft.MvvmLight;
    using System.Collections.ObjectModel;
    
    namespace MVVMLightDemo.Model
    {
        public class Student : ObservableObject
        {
            private int stuNo;
    
            public int StuNo
            {
                get { return stuNo; }
                set { stuNo = value; RaisePropertyChanged(() => StuNo); }
            }
            private string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; RaisePropertyChanged(() => Name); }
            }
    
    
    
            public static ObservableCollection<Student> GetStudentList()
            {
                ObservableCollection<Student> list = new ObservableCollection<Student>();
                list.Add(new Student() { StuNo = 1, Name = "张三" });
                list.Add(new Student() { StuNo = 2, Name = "李四" });
                return list;
            }
        }
    }

      注意:1.该类继承了ObservableObject,该类主要实现了属性变更通知接口,如我们用到的:RaisePropertyChanged 方法

         2.该类中的GetStudentList()方法只是为了得到数据,我们项目里一般都是从数据库查数据。

     

    接着,我们在ViewModel下添加StudentViewModel文件,代码如下:

    using GalaSoft.MvvmLight;
    using MVVMLightDemo.Model;
    using System.Collections.ObjectModel;
    
    namespace MVVMLightDemo.ViewModel
    {
        public class StudentViewModel : ViewModelBase
        {
            private ObservableCollection<Student> studentData;
            public ObservableCollection<Student> StudentData
            {
                get
                {
                    return studentData;
                }
                set
                {
                    studentData = value;
                    RaisePropertyChanged(() => StudentData);
                }
            }
    
    
            public StudentViewModel()
            {
                studentData = Student.GetStudentList();
            }
        }
    }

      注意:该类继承了ViewModelBase(ViewModelBase 也继承了ObservableObject),不要忘记using System.Collections.ObjectModel;

      我在该类的构造函数中,对 StudentData 进行了初始化,把数据给赋值上去了,那么在接下来的View中绑定 StudentData 才会出现数据。

    最后,在View文件夹下添加StudentView.xaml文件。代码如下:

    1 <Window x:Class="MVVMLightDemo.View.StudentView"
    2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4         Title="StudentView" Height="300" Width="300">
    5     <Grid>
    6         <DataGrid Name="studentDataGrid" ItemsSource="{Binding Path=StudentData}"/>
    7     </Grid>
    8 </Window>

    仅这样还不行,我们还需要让View与ViewModel关联起来,那么需要设置这个View的数据上下文。 在后台编写如下代码(也可在前台编写绑定DataContext)

     1 using System.Windows;
     2 using MVVMLightDemo.ViewModel;
     3 
     4 namespace MVVMLightDemo.View
     5 {
     6     public partial class StudentView : Window
     7     {
     8         public StudentView()
     9         {
    10             InitializeComponent();
    11             this.DataContext = new StudentViewModel();
    12         }
    13     }
    14 }

    好了,到这里我们实现了MVVMLight的数据绑定,后面将在这个代码的基础上,介绍命令绑定。

     装模作样的声明一下:本博文章若非特殊注明皆为原创,若需转载请保留原文链接(http://www.cnblogs.com/kest/p/4691423.html)及作者信息k_est

     

  • 相关阅读:
    德才真值表
    Linaro公司基于GCC推出的的ARM交叉编译工具
    荣耀4CROOT 成功!附本人ROOT过程——KINGROOT
    batman-adv——B.A.T.M.A.N. Advanced quick start guide
    linux内核外部驱动模块编译报错ERROR—drivers/*.ko] undefined
    Linux Kernel and Driver Development Training——linux-kernel-slides
    华为手机——解锁步骤
    编译Linux内核—浅谈EABI和OABI
    Linux Kernel and Driver Development Training
    Android—Step by step
  • 原文地址:https://www.cnblogs.com/kest/p/4691423.html
Copyright © 2011-2022 走看看