使用WPF开发应用程序,MVVM也许是个绕不过去的东西了,做一个小程序,做个参考。
MVVM是Model-View-ViewModel的简写,代码分离真是做的相当到位,通过界面和控制类中的数据绑定,来实现数据的展示。
第一步,建立view和viewmodel的联系。
1.新建WPF应用程序。
2.添加viewmodel文件夹,新建一个viewmodel的类,初始化的时候,实例化主窗口。
MainWindow Mw = new MainWindow();
3.修改app.xaml中项目的启动方式,使用startup事件,实例化viewmodel。
MainWindowViewModel Mw = new MainWindowViewModel();
第二步,view的数据绑定。
1.viewmodel中添加属性,然后设置view的数据上下文,最后,显示view。
public string Name { get; set; }
Name = "hello MVVM";
Mw.DataContext = this;
Mw.ShowDialog();
2.view中要做的就是绑定这个属性,添加一个按钮,content绑定name属性即可。
Button Content="{Binding Name}"
这只是一个最简单的展示,数据实体应该存放在model中,这个例子中暂时还没有用到model。
view的代码:
<Window x:Class="MyWPFApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="{Binding Name}" Height="23" HorizontalAlignment="Left" Margin="116,53,0,0" Name="button1" VerticalAlignment="Top" Width="75" /> </Grid> </Window>
viewmodel的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyWPFApp.ViewModel { class MainWindowViewModel { public MainWindowViewModel() { Initialize(); } /// <summary> /// 初始化 /// </summary> private void Initialize() { MainWindow Mw = new MainWindow(); Name = "hello MVVM"; Mw.DataContext = this; Mw.ShowDialog(); } #region 属性 public string Name { get; set; } #endregion } }
app.xaml的代码:
<Application x:Class="MyWPFApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="Application_Startup"> <Application.Resources> </Application.Resources> </Application>
app.xaml.cs的代码:
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Windows; using MyWPFApp.ViewModel; namespace MyWPFApp { /// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { MainWindowViewModel Mw = new MainWindowViewModel(); } } }
主界面的cs文件中没有添加一行代码,在MVVM模式中,界面要做的只有一个数据的绑定,理论上,界面是相对独立的。
当然,MVVM的绑定并没有这么简单,事件绑定的实现,我以后也会尝试着写写看,理解原理很重要,但是,入门的操作同样也很重要,一步一步来,慢慢的去深入。。。