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。