我试图通过使用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)中不存在”可能是一个愚蠢的错误,但是我在做什么错呢?
最佳答案
这里发生了很多事情:
1号由于函数是在类中声明的,因此您需要一个类的实例来调用它
public class SomeModel {
public void ToCarsFile(ObservableCollection<Car> CarsList)
{
--SOME CODE FOR DATA PERSISTENCE--
}
}
所以要称呼它,你需要这样的东西 var modelObject = new SomeModel();
modelObject.ToCarsFile(/*data*/);
因此,您的MVVM接线中有一些需要改进的地方
关于c# - 从ViewModel调用方法背后的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64195315/