为何要将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}}"
    
    >
绑定ViewModel数据源

相关文章:

  • 2022-12-23
  • 2021-05-01
  • 2021-10-30
  • 2022-12-23
  • 2022-02-25
  • 2021-08-30
  • 2021-06-24
猜你喜欢
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-11
相关资源
相似解决方案