私は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です。