using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVVM
{
//MVVM框架—— Vm层——
///
/// 主体框架是 数据 ViewModel---》dataservice----》config-----》各个模块
/// ViewModel是全局单列 在这个类里面有成员 dataservice 这个对象里面有各个仪表对象,其中config这个类又是全部仪表构造函数要传的参数,就是各个仪表的里面都有一个config这个类的对象
///
/// ui层 ViewModel这个类里面new出各个ui层的对象,相当于这个类里面就有各个ui的变量 这些变量在ui后台binding ui ui类的构造函数要传dataservice对象进去,就是说,ui在ViewModel里new的时候 把ViewModel类里的dataservice对象传进去。ui类里面是有一个dataservice对象的
///
/// 数据处理的流程 在仪表或者数据有动画后(动作,接收等)通过 各个仪表的里面的config对象里面的委托调用,在ui类里面把函数注册进去,这样就实现了model到view的数据传递
///
///
public class ViewModel //这个类是框架的开始部分,也就是枢纽,从这个类开始,一边是ui,一边是数据处理 也就是 一边是m 一边是 v
{
public static ViewModel Instance = new Lazy
public ViewModel()
{
FdataService = new DataService();//在vm构造里面new出数据类
VM1.start = true;//这个只是激活vm1 这个也就是ui类,没有直接new的情况是为了节省软件打开的时候的性能,在用的到时候直接激活,具体写法参考.net 8.0,实际使用是在用到的地方直接使用属性就会激活这个类
}
private DataService FdataService;//数据类,这个是所有具体业务或者叫模块,仪表,功能的类
public DataService DataService { get { return FdataService; } }//暴露给外面
public bool start;//实列的时候的属性,没有其他的具体意义
public VM1 VM1 => Fvm1 ??= new VM1(FdataService);//暴露属性,使用的时候激活 这个就是ui数据,在xaml里面 binding
private VM1 Fvm1;
public VM2 VM2 => Fvm2 ??= new VM2(FdataService);//这个就是ui数据,在xaml里面 binding ui的构造函数要将数据类传进去
private VM2 Fvm2;
}
}