zoukankan      html  css  js  c++  java
  • Silverlight开发之MVVM模式

          前段时间做Silverlight开发,用到了经典的MVVM开发模式,MVVM开发模式的组织形式有多种,但是万变不离其中,就是Module-View-ViewModule的形式,下面就以一个最简单的示例来讲解一下。
    首先打开VS 2010,新建一个Silverlight应用程序:
    然后在LeoSLWebPart项目上建立三个文件夹,分别为:Module,View和ViewModel:
    在Module文件下添加一个DataModule.cs的类文件,这个用来定义我们的Module对象,然后在里面写下如下的代码: 
    View Code
    1 public class DataModule
    2 {
    3 public string ID
    4 {
    5 get;
    6 set;
    7 }
    8
    9 public string Title
    10 {
    11 get;
    12 set;
    13 }
    14
    15 public string Name
    16 {
    17 get;
    18 set;
    19 }
    20
    21 public DataModule() { }
    22
    23 public DataModule(string id, string title, string name)
    24 {
    25 this.ID = id;
    26 this.Title = title;
    27 this.Name = name;
    28 }
    29 }
     再在ViewModule文件夹下添加一个名为GetDataViewModule.cs的类文件,用来获取数据,我这里只做一个简单的Demo,所以就直接赋给它一些静态的数据,代码如下:
    View Code
    1 public class GetDataViewModule
    2 {
    3 public ObservableCollection<DataModule> AllData { get; set; }
    4
    5 public GetDataViewModule()
    6 {
    7 AllData = new ObservableCollection<DataModule>();
    8 LoadData();
    9 }
    10
    11 private void LoadData()
    12 {
    13 AllData.Clear();
    14 AllData = GetAllData();
    15 }
    16
    17 public ObservableCollection<DataModule> GetAllData()
    18 {
    19 ObservableCollection<DataModule> allData = new ObservableCollection<DataModule>();
    20 allData.Add(new DataModule
    21 {
    22 ID = "0001",
    23 Title = "afda",
    24 Name = "Leo"
    25 });
    26 allData.Add(new DataModule
    27 {
    28 ID = "0002",
    29 Title = "aawa",
    30 Name = "Edmund"
    31 });
    32 return allData;
    33 }
    34 }
    然后再到View文件夹下添加一个名为DataViewPage.xaml的Silverlight页面,并且在页面里面添加一个DataGrid控件用于展示数据,在<navigation:Page>标签下添加一个引用ViewModule的语句:
    xmlns:vm="clr-namespace:LeoSLWebPart.ViewModule"
    然后添加如下代码,将刚刚开发的GetDataViewModule作为其静态数据源: 
    <navigation:Page.Resources>
    <vm:GetDataViewModule x:Key="gdvm"/>
    </navigation:Page.Resources>
    页面的详细代码如下:
    View Code
    1 <Grid x:Name="LayoutRoot" DataContext="{StaticResource gdvm}">
    2 <data:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding AllData}" IsReadOnly="True" Height="200" HorizontalAlignment="Left" Margin="0,4,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="400" >
    3 <data:DataGrid.Columns>
    4 <data:DataGridTemplateColumn Header="ID">
    5 <data:DataGridTemplateColumn.CellTemplate>
    6 <DataTemplate>
    7 <TextBlock Text="{Binding ID}" />
    8 </DataTemplate>
    9 </data:DataGridTemplateColumn.CellTemplate>
    10 </data:DataGridTemplateColumn>
    11 <data:DataGridTemplateColumn Header="标题">
    12 <data:DataGridTemplateColumn.CellTemplate>
    13 <DataTemplate>
    14 <TextBlock Text="{Binding Title}" />
    15 </DataTemplate>
    16 </data:DataGridTemplateColumn.CellTemplate>
    17 </data:DataGridTemplateColumn>
    18 <data:DataGridTemplateColumn Header="姓名">
    19 <data:DataGridTemplateColumn.CellTemplate>
    20 <DataTemplate>
    21 <TextBlock Text="{Binding Name}"/>
    22 </DataTemplate>
    23 </data:DataGridTemplateColumn.CellTemplate>
    24 </data:DataGridTemplateColumn>
    25 </data:DataGrid.Columns>
    26 </data:DataGrid>
    27 </Grid>

    还有一步,在App.xaml.cs文件中找到Application_Startup方法,将其中的代码修改为this.RootVisual = new DataViewPage();

    最后将解决方案生成,在浏览器中查看,就可以看到下图所示的结果了:

  • 相关阅读:
    PDO扩展
    阿里云ECS VSFTP上传本地文件
    Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图
    Mysql 5.6主从同步配置与解决方案
    windows安装配置mongodb及图形工具MongoVUE
    安装phpredis扩展以及phpRedisAdmin工具
    Redis安装配置以及开机启动
    CentOS安装Git服务器 Centos 6.5 + Git 1.7.1.0 + gitosis
    OpenStack 入门3
    Openstack 入门2
  • 原文地址:https://www.cnblogs.com/leolis/p/2103484.html
Copyright © 2011-2022 走看看