腾讯山寨了世界,我只需要山寨腾讯就够了。
只是一个简单的界面,梳理一下MVVMLight和数据驱动那点事。
MVVM设计模式,应该说是数据驱动驱动出来的,利用这种设计模式,能够更容易的将数据驱动进行到底。
两者本就是相辅相成,共生关系才对。
View层尽可能少的逻辑处理,专注于界面UI那点事;
ViewModel层最可能多的处理一切业务逻辑,用例流程,最主要的事情还有驱动界面的变化;
MVVMLight最核心最有价值的地方,就在于
Messenger.Default.Register<int>(this, "Login",async (msg) =>{ });
只需要在View层的构造函数里,注册消息就够了。一般主要是 界面导航,被驱动的不能直接绑定的Ui改变。。。
这个创举,成功的分离后台线程和Ui线程。
可以让我们告别ThreadPool.RunAsync();以及Dispatcher.RunAsync();这种复杂的后台线程和Ui线程之间的不断变换。
良好的MVVM开发代码,就应该是这样的。如果代码里面,有坏味道,没能将业务或逻辑分离到ViewModel层,那肯定就是
数据驱动的理念还没有实现好。
具体的实现方式,不是主角。直接来看一个数据驱动与实践驱动的对比。
这里的自动登陆和记住密码,有这样一种逻辑关系。
点选了“自动登陆”,必然要自动选择 ”记住密码“;取消了记住密码,那必须不可能自动登陆了。
如果是在Winfrom的事件驱动下,必然是再两个CheckBox的Checked事件里,做判断,更改另一个的状态。
如果是数据驱动呢?
只需要在属性设置里,做一次判断。省去了两次为事件附加事件处理程序。
还有东西,写不出来,说不清楚。还需要继续精通技术,和提高代码量才有可能下笔如有神。