MVVMLight綁定數據

  咱們先新建一個WPF項目MVVMLightDemo,添加GalaSoft.MvvmLight.dll(沒有能夠本身下載)html

  

  而後在項目中添加三個文件夾,如圖:數據庫

    

  先添加咱們的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 方法this

     2.該類中的GetStudentList()方法只是爲了獲得數據,咱們項目裏通常都是從數據庫查數據。spa

 

接着,咱們在ViewModel下添加StudentViewModel文件,代碼以下:code

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;xml

  我在該類的構造函數中,對 StudentData 進行了初始化,把數據給賦值上去了,那麼在接下來的View中綁定 StudentData 纔會出現數據。htm

 

最後,在View文件夾下添加StudentView.xaml文件。代碼以下:blog

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

相關文章
相關標籤/搜索