MVVM在Silverlight中的简单应用

1.学习要学会总结,养成好习惯。

现在的项目中需要用到silverlight4和wcf,其中MVVM做为silverlight中的一种常用的设计模式被广泛的引用,小弟刚刚学习,下面是我学习之后所做的一个小小的例子。

本篇文章只是做为学习silverlight入门程序的新手们共同学习,对应老鸟和已经明白mvvm的可以跳过,因为真的很基础。

所谓的MVVM就是 Model-View-ViewModel,具体的我就不去解释了。下面看代码:

  • Model 中建立的是一个Student实体s
View Code
 1 namespace MVVMDemo.Model
2 {
3 public class Student
4 {
5 private string name;
6 private int age;
7 private int scores;
8 private string address;
9
10 public string Name
11 {
12 get { return name; }
13 set { name = value; }
14 }
15
16 public int Age
17 {
18 get { return age; }
19 set { age = value; }
20 }
21
22 public int Scores
23 {
24 get { return scores; }
25 set { scores = value; }
26 }
27
28 public string Address
29 {
30 get { return address; }
31 set { address = value; }
32 }
33 }
34 }
  • ViewModel 是MVVM模式中的重头戏了,所有的数据处理以及和xaml文件中的绑定都要靠它来处理。我只是做了一个最简单的数据读取。
View Code
 1 namespace MVVMDemo
2 {
3 public class PageViewModel:INotifyPropertyChanged
4 {
5 public List<Student> Students { get; set; }
6
7 public PageViewModel()
8 {
9 Students = getList();
10 }
11
12 public List<Student> getList()
13 {
14 Students = new List<Student>() {
15 new Student{ Name="张三", Age=16,Scores=89,Address="湖北省武汉市洪山区"},
16 new Student{ Name="李四", Age=16,Scores=59,Address="上海市国顺路670号复旦大学管理学院史."},
17 new Student{ Name="赵虎", Age=16,Scores=82,Address="广元西路55号浩然高科技大厦"},
18 };
19 return Students;
20
21 }
22
23 private void NotifyPropertyChanged(String info)
24 {
25 if (info != null)
26 {
27 PropertyChanged(this, new PropertyChangedEventArgs(info));
28 }
29 }
30
31 public event PropertyChangedEventHandler PropertyChanged;

呵呵,够简单把。

  • View中直接绑定一个简单的MVVM 就形成了。
View Code
 1      xmlns:local="clr-namespace:MVVMDemo" 
2 <UserControl.Resources>
3 <local:PageViewModel x:Key="vm"></local:PageViewModel>
4 </UserControl.Resources>
5 <Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource vm}" Height="200" Width="800" VerticalAlignment="Top" HorizontalAlignment="Left">
6 <sdk:DataGrid ItemsSource="{Binding Path=Students}" AutoGenerateColumns="False" IsReadOnly="True" VerticalAlignment="Top" HorizontalAlignment="Left"
7 Margin="0,0,-11,0" Height="200" Width="400">
8 <sdk:DataGrid.Columns>
9 <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}"></sdk:DataGridTextColumn>
10 <sdk:DataGridTextColumn Header="Age" Binding="{Binding Age}"></sdk:DataGridTextColumn>
11 <sdk:DataGridTextColumn Header="Scores" Binding="{Binding Scores}"></sdk:DataGridTextColumn>
12 <sdk:DataGridTextColumn Header="Address" Binding="{Binding Address}"></sdk:DataGridTextColumn>
13 </sdk:DataGrid.Columns>
14 </sdk:DataGrid>
15 </Grid>
16 </UserControl>

如果你看完本篇觉得写的不好,请不要骂我,每个人都从不会开始去学习的。如果你有什么好的建议和想指点小弟的,非常欢迎。好,闲话不多说,看完了可能你明白了绑定是怎么一回事了。那你有纳闷了,我如果想改变view中的数据,viewmodel如何知道了;我选中了其中一行,我能不能直接从页面得到我想要的东西了。其实这些是mvvm中最重点的东西:command以及以后我们会学到的双向绑定问题。s

posted @ 2012-02-07 11:01  小风。  阅读(274)  评论(0编辑  收藏  举报