Silverlight中使用MVVM

今天在园子看到一篇关于MVVM的文章,顺便实践了下,代码如下:

Model:

 

  
    
public class Person
{
public int age { get ; set ; }
public string name { get ; set ; }
}

 

 

 

代码
   
     
using System.ComponentModel;
using System.Collections.ObjectModel;
public class Persons
{
public List < Person > person;
public List < Person > getPerson()
{
person
= new List < Person > ()
{
new Person{name = " Yuanyuan " ,age = 23 },
new Person{name = " Yoyo " ,age = 28 },
new Person{name = " Me " ,age = 30 }

};
return person;
}
}

ViewModel:

 

代码
   
     
using sl20100820.Model;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections.ObjectModel;
public class PageViewModel:INotifyPropertyChanged
{
public List < Person > Human { get ; set ; }
public PageViewModel()
{
Human
= new Persons().getPerson();
}
private Person _getOnePerson;
public Person GetOnePerson
{
get { return _getOnePerson;}
set {_getOnePerson = value;
if (PropertyChanged != null )
{
PropertyChanged(
this , new PropertyChangedEventArgs( " GetOnePerson " ));

}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}

 

 

View:

 

代码
   
     
< UserControl x:Class ="sl20100820.View.PageView"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
d:DesignHeight
="300" d:DesignWidth ="400" xmlns:data ="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" >

< Grid x:Name ="LayoutRoot" Background ="White" >
< data:DataGrid AutoGenerateColumns ="True" ItemsSource =" {Binding Human} " SelectedItem =" {Binding GetOnePerson,Mode=TwoWay} "
Height
="200" HorizontalAlignment ="Left" Margin ="41,65,0,0" Name ="dataGrid1" VerticalAlignment ="Top" Width ="200" />
< TextBox Text =" {Binding GetOnePerson.age,Mode=OneWay} " Height ="23" HorizontalAlignment ="Left" Margin ="247,149,0,0" Name ="textBox1" VerticalAlignment ="Top" Width ="120" />
< TextBox Text =" {Binding GetOnePerson.name,Mode=OneWay} " Height ="23" HorizontalAlignment ="Left" Margin ="247,191,0,0" Name ="textBox2" VerticalAlignment ="Top" Width ="120" />

</ Grid >
</ UserControl >

 

MainPage

 

代码
   
     
< UserControl x:Class ="sl20100820.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
xmlns:model
="clr-namespace:sl20100820.ViewModel" xmlns:view ="clr-namespace:sl20100820.View"
d:DesignHeight
="300" d:DesignWidth ="400" >

< UserControl.Resources >
< model:PageViewModel x:Key ="page" />
</ UserControl.Resources >
< Grid Name ="gridView1" Background ="White" DataContext =" {StaticResource page} " >
< view:PageView ></ view:PageView >
</ Grid >
</ UserControl >

 

 

View in browser:

Silverlight中使用MVVM

 

你可能感兴趣的:(silverlight)