2016-08-30 4 views
0

私はMVVMをよく理解しておらず、他のページでいくつかの記事を読んでいます。Xamarin:MVVMの説明を教えてください

ViewModelはすべてのビジネスロジックを行い、データモデルとやりとりし、データモデルとのやりとりを行い、プレゼンテーションのためにビューにデータを送信します。

ビューでは、UIに直接関連する機能しかありません。私はBindingContextをにそれを渡す必要があり、なぜ私は保持することができる場合TestingViewModelオブジェクト:

これは私がコードを持っていますが、わからない、それはそれは

 private TestingViewModel Model 
    { 
     get 
     { 
      return BindingContext as TestingViewModel; 
     } 
    } 

    public TestingPage() 
    { 
     InitializeComponent(); 

     BindingContext = new TestingViewModel(); 
     Model.PropertyChanged += TestingPropertyChanged; 

     NavigationPage.SetHasNavigationBar(this, false); 
     NavigationPage.SetHasBackButton(this, false); 

     MediaFactory.ClearAllCachedMedia(); 
     SetupTappedControl(); 
    } 

    private void TestingPropertyChanged(object sender, PropertyChangedEventArgs e) 
    { 
     if (e.PropertyName.Equals("ActivePage")) 
     { 
      if (Model.ActivePage != null) 
      { 
       Device.BeginInvokeOnMainThread(async() => 
       { 
        var path = await MediaFactory.GetImagePathAsync(Model.ActivePage.DocumentId + "_" + Model.ActivePage.PageNumber); 

        CanvasView.Strokes = Model.ActivePage.Strokes; 
        CanvasView.LoadBitmapInMemory(path, Model.ActivePage.Width, Model.ActivePage.Height); 
       }); 
      } 
     } 
    } 

    #region File Button Selected 

    public void TapFileOpen(object sender, EventArgs e) 
    { 
     Task.Run(() => 
     { 
      var pickFileTask = CrossFilePicker.Current.PickFile(); 
      var data = pickFileTask.Result; 
      Model.OpenDocument(data.FileName, data.DataArray); 
     }); 

    } 

質問1を行うには正しい方法で私のコードですビューのコードビハインドクラスでは?以下

ライン:

    CanvasView.Strokes = Model.ActivePage.Strokes; 
        CanvasView.LoadBitmapInMemory(path, Model.ActivePage.Width, Model.ActivePage.Height); 

質問2:ストロークは、ストロークオブジェクトのコレクションです。ストロークを実行する もViewModelです。

答えて

0

MVVMの考え方は、ビューとビジネスロジックを作成することを分けることです。

ViewModelには、あなたが後でそれバインドあなたの意見に、そう簡単なあなたが最良のケースで、あなたの意見に背後にある任意のコードを持っていないだろうPropertiesCommandsまたはRelyCommandsの実装を含む、ビジネス・ロジックを管理します。

このパターンのためのより良い理解のために、私はあなたがより良い使用のために、あなたのコードの構造を再とMVVM

使用してからの利益は何をしていることができますどのように説明します。この msdnリンクを読むことをお勧めします
関連する問題