110,534
社区成员
发帖
与我相关
我的任务
分享
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private string name;
public string Name
{
get { return name; }
set { name = value;OnPropertyChanged("Name"); }
}
private int age;
public int Age
{
get { return age; }
set { age = value;OnPropertyChanged("Age"); }
}
private bool isSelected = false;
/// <summary>
/// 做界面显示时,标识是否被选中
/// </summary>
public bool IsSelected
{
get { return isSelected; }
set { isSelected = value;OnPropertyChanged("IsSelected"); }
}
}
public class Person1
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Person : INotifyPropertyChanged
{
[Model]
public string Name.....
这样的声明,然后你自己写一个通用方法,从 ViewModel 中找到所有标记为 ModelAttribute 的属性,在你调用后台数据服务时反射地产生 通用 ExpandoObject或者 JObject 对象。
这样就能自动、通用地搞定所有 model 了。
数据结构毕竟是设计的最低级基础。但是 Model 如此简单,纠结它并没啥意思。JObject GetModel(); //或者使用 ExpandoObject
void SetModel(Jobject x); //或者使用 ExpandoObject
可以说,VMMV 中的 M,毫不起眼,基本上是个最底层的调用后台接口时才用一下的东西。
编程设计全部从需求出发,从千变万化的 View 出发,然后重构和优化 ViewModel,前端工程师满脑子几乎只有 V 和 VM 的关系问题。基本上对于有点经验的开发者,把什么”增删改查“看成是最低级和机械化的 model 抛出和返回,只有没有创意的前端工程师才会满脑子只有 Model 概念。 JObject GetModel(); //或者使用 ExpandoObject
void SetModel(Jobject); //或者使用 ExpandoObject
这就够了!!!!class Person
{
public string Name;
public int Age;
public DateTime RegistDate;
.......
}
这样的失血模型的字段定义就足够了。
Model 用来进行简单地序列化、反序列化,所以 MVVM 中几乎可以忽略 M 的作用,而重点其实是丰富的前边万化的 V --> VM 的双向绑定机制。而这个机制的 oneway 方向,也就是 VM 触发 V 的那个方向,就是靠你说的那类东西(你说的大致是最基础最常见的机制的四分之一、五分之一)来实现的。