MVVM模式结合MVVMlight框架的应用(20)

MVVM模式结合MVVMlight框架的应用(20),第1张

概述MVVM模式结合MVVMlight框架的应用 代码下载 程序=数据结构+算法 面向对象=对象+对象之间关系 1.以数据为中心的开发方式。 1)Model:定义一个数据结构。    关键代码:实现接口INotifyPropertyChanged 2)ViewModel:定义算法 *** 作数据结构(数据集合,增加,删除,修改,查询)    关键代码:继承ViewModelBase             

MVVM模式结合MVVMlight框架的应用

代码下载
程序=数据结构+算法
面向对象=对象+对象之间关系

1.以数据为中心的开发方式。
1)Model:定义一个数据结构。
   关键代码:实现接口INotifyPropertyChanged
2)viewmodel:定义算法 *** 作数据结构(数据集合,增加,删除,修改,查询)
   关键代码:继承viewmodelBase
             定义一个集合ObservableCollection<c401xmmc> C401xmmcs
3)VIEw:数据的一种展现形式。(查询,新增,修改,删除)
交互。事件通知,
  Messenger.Default.Unregister(this);
  OKbuttonCommand = new RelayCommand<c401xmmc>(OKbuttonClick);//传递命令

先注册,后应用。
注册:
   Messenger.Default.Register<String>(
          this,
          "Home2",
          msg =>
          {
              CreateC401xmmc newCustomer = new CreateC401xmmc();
              newCustomer.Title = msg;
              newCustomer.Show();
          });


发送命令:
   Messenger.Default.Send("新建1","Home2");

MVVMlight中封装的是多播。(观察者设计模式)
界面交互通关过注册命令处理。
以一个界面为主,其他界面是此界面的辅助。(利用主界面的viewmodel)

2.界面都是通过绑定展现数据。

主界面关键代码
1)前台VIEw
      <GrID.DataContext>
            <vm:Homeviewmodel />
      </GrID.DataContext>
      <button Content="新增" WIDth="120" Height="30" Command="{Binding CreateCommand}" ></button>
        <sdk:DataGrID @R_404_6843@GenerateColumns="True" GrID.Row="1"
                      HorizontalAlignment="Stretch"
                      ItemsSource="{Binding Path=C401xmmcs}"
                      margin="20,10,20,10" name="dataGrID1"
                      VerticalAlignment="Stretch"  />

2)后台viewmodel
  public RelayCommand CreateCommand { get; private set; }
  CreateCommand = new RelayCommand(Create);   //CreateCommand绑定到Create处理函数
  Create函数中
  Messenger.Default.Send("新建1","Home2");
因为前面注册:
 Messenger.Default.Register<String>(
          this,
          msg =>
          {
              CreateC401xmmc newCustomer = new CreateC401xmmc();
              newCustomer.Title = msg;
              newCustomer.Show();
          });
录入数据界面,确定保存
 1)前台VIEw
       <GrID.DataContext>
            <vm:Homeviewmodel />
        </GrID.DataContext>

           <TextBox GrID.Row="0" GrID.Column="1" Height="30"
                 Text="{Binding Path=B401ID,Mode=TwoWay}" />
      <button x:name="Okbutton" Content="确定" Click="OKbutton_Click"
                WIDth="75" Height="23" HorizontalAlignment="Right"
                margin="0,12,0" GrID.Row="1"
                Command="{Binding OKbuttonCommand}"
                CommandParameter="{Binding Elementname=c401xmmc,Path=DataContext}"
                />
2)后台viewmodel
 public RelayCommand<c401xmmc> OKbuttonCommand { get; private set; }
  OKbuttonCommand = new RelayCommand<c401xmmc>(OKbuttonClick);//传递命令
OKbuttonClick方法中处理
     Messenger.Default.Send<c401xmmc>(param,"ChilDWindow");
因为前面注册:
     Messenger.Default.Register<c401xmmc>(this,"ChilDWindow",AddCustomer);

AddCustomer函数中处理数据
        private voID AddCustomer(c401xmmc param)
        {
            _customers.Add(param);
            //可以保存到数据库
            RaisePropertyChanged("C401xmmcs");

        }

总结:
1.数据结构单对象,对象集合。算法:对数据的处理。
2.不要去界面要数据。数据一定是在数据结构中。充分利用Siliverlight的绑定机制,不同控件绑定方式不同。
扩展:
1.结合数据库处理数据。初始化,处理数据。Silverlight与RIA WCF服务结合起来。
2.MEF插件组装不同的viewmodel。

练习思考:添加修改,删除按钮。

效果:

新增界面

 

 代码下载

总结

以上是内存溢出为你收集整理的MVVM模式结合MVVMlight框架的应用(20)全部内容,希望文章能够帮你解决MVVM模式结合MVVMlight框架的应用(20)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存