为何要将xaml与xaml.cs两个原本在一起的文件解耦?
超级解耦的主要体现形式为:将界面所有的事件转移到ViewModel中,比如原来界面一个button的click事件,要在界面下面对应的.xaml.cs文件中写相应的事件逻辑,通过超级解耦后,就不需要再在xaml.cs文件中写任何逻辑,一致于可以让这一个文件为创建的时候什么样子,项目做完的时候还是什么样子,一笔都不用谢,这样做的好处就是,原来xaml.cs文件中,如果写了事件,对应的xaml界面文件由于有相应的事件,那么如果没有xaml.cs文件,就无法运行这个项目,就是说xaml与xaml.cs文件严重耦合。而通过超级解耦后,就将两者彻底解耦了。
那么超级解耦有什么好处或者实用性呢?答案就是可以将ViewModel单独抽出一层,可以放在一个独立的类库中,体现上是实现了解耦,更实用的的是通过解耦后可以实现核心代码的高度保密,从而达到一定的商业价值最大化。
姜彦20180522 2118
几个要点
1.使用RelayCommand命令
2.通过nuget添加 Install-Package MvvmLight -Version 5.3.0,用这种方式添加,可以直接派生好相对性的ViewModel、ViewModelLocator.cs,并且直接在App.xaml中自己生成一个资源字典
<ResourceDictionary >
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:AE240_Simulator.ViewModel" />
</ResourceDictionary>
3.在界面的xaml中 增加数据源的绑定 (解决了DataGrid不用在cs代码中,代码绑定的问题)
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:View="clr-namespace:Utility.Tool.Controls.View;assembly=Utility.Tool.Controls" xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2" xmlns:View1="clr-namespace:AE240_Simulator.View" x:Class="AE240_Simulator.MainWindow" Title="{Binding Path=SoftVersion}" Height="530" Width="853" WindowStartupLocation="CenterScreen" DataContext="{Binding Main,Source={StaticResource Locator}}" >