13,190
社区成员
发帖
与我相关
我的任务
分享
public class A: INoifyPropertyChanged
{
private ObservableCollection<B> _Items = new ObservableCollection<B>();
public ObservableCollection<B>{ get ......}
public int 最多允许几项{ get.......set ........}
public A()
{
_Items.CollectionChanged+= Items_CollectionChanged;
}
private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
注册监听 e.NewItems 每个元素的 Selected 事件,事件中保证被选中的 Item 总数不超过上述属性限制
}
}
}
public class B: INotifyPropertyChanged
{
public string Text{ get........set.......}
public bool Selectd{ get.......set......}
}
这个 model,它是前端的(与后端 model 不是同一个概念)。
mvvm 框假可以自动将将来美工板上使用的任何合适的选择控件的 click 行为跟“Selected 属性设置为 true”的代码行为相绑定,而不需要写一行代码。然后这个 vm 自己能够约束“最多选择多少项”的规则,例如在超出范围时弹出一个异常提示使得选择失败,或者是自动就把其它选择改为false。而最后这个改动又会自动被 mvvm 机制捕获,从而自动更新前端界面。
mvvm 使得你要编写的代码只有几分之一,那么开发和维护的代价也就小很多。
当然,如果你不理解 mvvm 机制,那么照猫画虎也需要半月才能适应。如果你没有类似的基础,那么用大半年年才能学会,也是可能的。