浅尝MVVMLight…

    最近要写WPF技术的项目,所以要学习一下关于WPF的知识…今天呢了解了一下MVVM的知识,具体内容如下了…

    MVVM呢是Model-View-ViewModel的缩写了…MVVM的由来算是有MVP(Model-View-Presenter)模式与WPF的结合新型架构框架了,它立足于原有MVP框架并且把WPF的新特性揉合进去,以应对客户日益复杂的需求变化…

    MVVMLight呢算是MVVM他是MVVM的一种实现,当然还有其他的其它的实现了(例如微软的Prism),但现在MVVMLight是一个公认的比较好的一种实现了…

    下面介绍一下MVVMLight的安装方法了…

    我比较喜欢从Visual Studio中的NuGet Package中来获取MVVMLight了,如果想安装MVVMLight Toolkit请自行度娘或谷姐…

    首先呢从Visaul Studio中的工具菜单项打开 扩展管理器,然后再搜索栏中输入 NuGet Package进行搜索…

    image

    然后安装NuGet Package,如果已经安装过的可以直接跳过进行下一步了…NuGet Package不是必须安装的了,也可以直接安装MVVMLight了,但是安装了NuGet Package以后,它可以使你的MVVMLight保持到最新版本了,当有更新的时候呢会自动有更新提示了…推荐使用了…

    安装完NuGet Package后,然后再在 解决方案 右键选择 管理NuGet程序包 中搜索MVVMLight进行安装…至此MVMMLight就安装完成了…以后如果那个项目需要使用MVVMLight库就只要在 管理NuGet程序包中进行一次MVVMLight安装就可以了…

    image

    下面写段代码使用一下MVVMLight了…

     建立项目MVVMLightTest…然后在项目中添加类Song,类中代码如下…

   1:  /// <summary>
   2:      /// Model of a 'song'.
   3:      /// </summary>
   4:      public class Song
   5:      {
   6:          #region Members
   7:          string _artistName;
   8:          string _songTitle;
   9:          #endregion
  10:   
  11:          #region Properties
  12:          /// <summary>
  13:          /// The artist name.
  14:          /// </summary>
  15:          public string ArtistName
  16:          {
  17:              get { return _artistName; }
  18:              set { _artistName = value; }
  19:          }
  20:   
  21:          /// <summary>
  22:          /// The song title.
  23:          /// </summary>
  24:          public string SongTitle
  25:          {
  26:              get { return _songTitle; }
  27:              set { _songTitle = value; }
  28:          }
  29:          #endregion
  30:      }

         然后再添加类SongViewModel,类中代码如下…

        

     1:      /// <summary>
     2:      /// This class is a view model of a song.
     3:      /// </summary>
     4:      public class SongViewModel:ObservableObject
     5:      {
     6:          #region Construction
     7:          /// <summary>
     8:          /// Constructs the default instance of a SongViewModel
     9:          /// </summary>
     10:          public SongViewModel()
     11:          {
     12:              _song = new Song { ArtistName = "Unknown", SongTitle = "Unknown" };
     13:          }
     14:          #endregion
     15:   
     16:          #region Members
     17:          Song _song;
     18:          int _count = 0;
     19:          #endregion
     20:   
     21:          #region Properties
     22:          public Song Song
     23:          {
     24:              get
     25:              {
     26:                  return _song;
     27:              }
     28:              set
     29:              {
     30:                  _song = value;
     31:              }
     32:          }
     33:   
     34:          public string ArtistName
     35:          {
     36:              get { return Song.ArtistName; }
     37:              set
     38:              {
     39:                  if (Song.ArtistName != value)
     40:                  {
     41:                      this.Song.ArtistName = value;
     42:                      RaisePropertyChanged("ArtistName");
     43:                  }
     44:              }
     45:          } 
     46:          #endregion
     47:   
     48:          #region Commands
     49:          void UpdateArtistNameExexute()
     50:          {
     51:              ++_count;
     52:              ArtistName = string.Format("Elvis ({0})", _count);
     53:          }
     54:          bool CanUpdateArtistNameExecute()
     55:          {
     56:              return true;
     57:          }
     58:          public ICommand UpdateArtistName
     59:          {
     60:              get
     61:              {
     62:                  return new RelayCommand(UpdateArtistNameExexute, CanUpdateArtistNameExecute);
     63:              }
     64:          }
     65:          #endregion
     66:      }

    然后再MainWindow.xaml中添加以下代码…

       1:   <Window.DataContext>
       2:          <!-- Declaratively create an instance of our SongViewModel -->
       3:          <local:SongViewModel />
       4:      </Window.DataContext>
       5:      <Grid>
       6:          <Grid.RowDefinitions>
       7:              <RowDefinition Height="Auto" />
       8:              <RowDefinition Height="Auto" />
       9:              <RowDefinition Height="Auto" />
     10:          </Grid.RowDefinitions>
     11:          <Grid.ColumnDefinitions>
     12:              <ColumnDefinition Width="Auto" />
     13:              <ColumnDefinition Width="Auto" />
     14:          </Grid.ColumnDefinitions>
     15:          <Label Grid.Column="0" Grid.Row="0" Content="Example 1 - this doesn't work!" />
     16:          <Label Grid.Column="0" Grid.Row="1" Content="Artist:  " />
     17:          <Label Grid.Column="1" Grid.Row="1" Content="{Binding ArtistName, Mode=TwoWay}" />
     18:          <Button Grid.Column="1" Grid.Row="2" Name="ButtonUpdateArtist" Content="Update Artist Name" Command="{Binding UpdateArtistName}"/>
      19:      </Grid>

    然后生成并运行程序…效果如下

    image image image

    此程序虽然功能狠狠简单,但是它却体现出了MVVM的思想…程序中的所有业务逻辑放在了ViewModel中,在MainWindow的.cs文件中未添加任何代码…只需在MainWindow.xaml中进行数据和命令的绑定即可…

转载于:https://www.cnblogs.com/kordkuo/archive/2012/08/13/2636693.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值