MVVM模式結合MVVMlight架構的應用(20)

來源:互聯網
上載者:User

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 AutoGenerateColumns="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,
          "Home2",
          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,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。

練習思考:添加修改,刪除按鈕。

效果:

新增介面

 

 代碼下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.