0
我對MVVM沒有很好的理解,並且閱讀了其他頁面上的一些文章。Xamarin:給我一些MVVM的說明
ViewModel是否執行所有業務邏輯並與數據模型進行交互,然後將數據發送到視圖進行演示。
在View上,只會有直接關聯UI的功能。
這是我的代碼,我有一些代碼,但不知道是不是這樣做
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的正確方法是:爲什麼我必須把它傳遞給的BindingContext如果我可以抱TestingViewModel對象在View的Code-behind類中?
的下面行:
CanvasView.Strokes = Model.ActivePage.Strokes;
CanvasView.LoadBitmapInMemory(path, Model.ActivePage.Width, Model.ActivePage.Height);
問2:筆畫是中風的對象的集合。做筆畫 也是一個ViewModel。