如何解决从ViewModel调用CodeBehind方法
我正在尝试通过使用Xamarin.Forms编码一个小应用程序来学习MVVM设计模式。 我保护Android文件系统(XML)中的所有数据,使其持久化。但是目前,所有保护数据的方法都在viewmodel中,我正在尝试将这些方法移至CodeBehind(模型)以遵守MVVM设计模式。将所有方法移至CodeBehind之后,即使它们位于同一名称空间中并声明为public,也无法在viewmodel中调用这些函数。
viewmodel中的方法DeleteCar(...)
尝试调用CodeBehind中的方法ToCarsFile(...)
:
public void DeleteCar(object sender)
{
AllCars.Remove(sender as Car);
ToCarsFile(AllCars); //This is underlined in red
}
CodeBehind(.xaml.cs):
public void ToCarsFile(ObservableCollection<Car> CarsList)
{
--SOME CODE FOR DATA PERSISTENCE--
}
我收到错误消息“错误CS0103:名称'ToCarsFile'在当前上下文(CS0103)(ProjectCars)中不存在”
解决方法
这里发生了很多事情:
1st。由于函数是在类中声明的,因此您需要一个类的实例来调用它
public class SomeModel {
public void ToCarsFile(ObservableCollection<Car> CarsList)
{
--SOME CODE FOR DATA PERSISTENCE--
}
}
所以要调用它,您需要像这样的
var modelObject = new SomeModel();
modelObject.ToCarsFile(/*data*/);
- 您的xaml.cs不应该是您的模型。 ViewModel和Model都应独立于视图(xaml.cs类是您的视图类)
因此,您的MVVM接线中有一些需要改进的地方
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。