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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM