C#MVVM架构 简单实例可以运行

上传者: 39397927 | 上传时间: 2025-08-03 10:39:23 | 文件大小: 106KB | 文件类型: ZIP
**C# MVVM架构简介** MVVM(Model-View-ViewModel)是一种软件设计模式,尤其在开发WPF、UWP和Xamarin等基于.NET Framework的桌面应用或移动应用时广泛应用。该模式源自经典的MVC(Model-View-Controller)模式,但更侧重于解耦视图(View)和业务逻辑(Controller)。 在C# MVVM架构中,有三个核心组件: 1. **Model(模型)**:这部分主要负责业务逻辑和数据处理,与数据库或其他数据源交互,封装了应用程序的数据模型。 2. **View(视图)**:视图是用户界面,直接与用户交互的部分,它通常由UI元素如按钮、文本框、窗口等组成。在C#中,这可能是XAML文件,用于定义界面布局和外观。 3. **ViewModel(视图模型)**:视图模型作为模型和视图之间的桥梁,它包含了业务逻辑并提供了数据绑定到视图的属性和命令。ViewModel还实现了INotifyPropertyChanged接口,当属性值改变时,可以通知视图进行更新。 **简单实例** 一个简单的C# MVVM应用可能包含以下部分: - **Model类**:例如,一个名为`Person`的类,包含`Name`和`Age`属性,可能还有获取或设置这些属性的方法。 ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } } ``` - **ViewModel类**:如`MainViewModel`,它公开`Person`对象的属性,并可能包含操作`Person`的命令。 ```csharp public class MainViewModel : INotifyPropertyChanged { private Person _person; public Person Person { get => _person; set { if (_person != value) { _person = value; OnPropertyChanged(nameof(Person)); } } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } // 命令示例 public RelayCommand SaveCommand { get; } private void OnSaveExecute() { // 保存Person数据到数据库或执行其他业务逻辑 } } ``` - **View**:在WPF中,XAML文件定义了用户界面,并将控件绑定到ViewModel的属性。 ```xml

文件下载

资源详情

[{"title":"( 54 个子文件 106KB ) C#MVVM架构 简单实例可以运行","children":[{"title":"MVVMProject","children":[{"title":"MVVMDemo","children":[{"title":"App.config <span style='color:#111;'> 184B </span>","children":null,"spread":false},{"title":"MVVMDemo.csproj <span style='color:#111;'> 4.64KB </span>","children":null,"spread":false},{"title":"App.xaml <span style='color:#111;'> 323B </span>","children":null,"spread":false},{"title":"obj","children":[{"title":"Debug","children":[{"title":"MVVMDemo_MarkupCompile.lref <span style='color:#111;'> 86B </span>","children":null,"spread":false},{"title":"GeneratedInternalTypeHelper.g.cs <span style='color:#111;'> 2.94KB </span>","children":null,"spread":false},{"title":"MVVMDemo_MarkupCompile.i.cache <span style='color:#111;'> 273B </span>","children":null,"spread":false},{"title":"MVVMDemo.csproj.CoreCompileInputs.cache <span style='color:#111;'> 42B </span>","children":null,"spread":false},{"title":"MVVMDemo.csproj.GenerateResource.cache <span style='color:#111;'> 84B </span>","children":null,"spread":false},{"title":"MVVMDemo_MarkupCompile.i.lref <span style='color:#111;'> 86B </span>","children":null,"spread":false},{"title":"MVVMDemo.Properties.Resources.resources <span style='color:#111;'> 180B </span>","children":null,"spread":false},{"title":"DesignTimeResolveAssemblyReferencesInput.cache <span style='color:#111;'> 6.97KB </span>","children":null,"spread":false},{"title":"MVVMDemo.csproj.AssemblyReference.cache <span style='color:#111;'> 6.82KB </span>","children":null,"spread":false},{"title":"MVVMDemo.exe <span style='color:#111;'> 16.00KB </span>","children":null,"spread":false},{"title":"TempPE","children":[{"title":"Properties.Resources.Designer.cs.dll <span style='color:#111;'> 4.00KB </span>","children":null,"spread":false}],"spread":false},{"title":".NETFramework,Version=v4.8.AssemblyAttributes.cs <span style='color:#111;'> 210B </span>","children":null,"spread":false},{"title":"View","children":[{"title":"PersonsView.g.i.cs <span style='color:#111;'> 4.35KB </span>","children":null,"spread":false},{"title":"View.g.i.cs <span style='color:#111;'> 4.31KB </span>","children":null,"spread":false},{"title":"StartView.baml <span style='color:#111;'> 2.35KB </span>","children":null,"spread":false},{"title":"StartView.g.cs <span style='color:#111;'> 3.04KB </span>","children":null,"spread":false},{"title":"StartView.g.i.cs <span style='color:#111;'> 3.04KB </span>","children":null,"spread":false}],"spread":false},{"title":"MVVMDemo.csproj.SuggestedBindingRedirects.cache <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"MVVMDemo.csproj.FileListAbsolute.txt <span style='color:#111;'> 1.49KB </span>","children":null,"spread":false},{"title":"MVVMDemo.pdb <span style='color:#111;'> 47.50KB </span>","children":null,"spread":false},{"title":"GeneratedInternalTypeHelper.g.i.cs <span style='color:#111;'> 2.94KB </span>","children":null,"spread":false},{"title":"MVVMDemo_MarkupCompile.cache <span style='color:#111;'> 273B </span>","children":null,"spread":false},{"title":"MVVMDemo.g.resources <span style='color:#111;'> 2.58KB </span>","children":null,"spread":false},{"title":"App.g.i.cs <span style='color:#111;'> 2.29KB </span>","children":null,"spread":false},{"title":"DesignTimeResolveAssemblyReferences.cache <span style='color:#111;'> 203B </span>","children":null,"spread":false},{"title":"App.g.cs <span style='color:#111;'> 2.29KB </span>","children":null,"spread":false}],"spread":false}],"spread":true},{"title":"Model","children":[{"title":"Student.cs <span style='color:#111;'> 361B </span>","children":null,"spread":false},{"title":"Teacher.cs <span style='color:#111;'> 370B </span>","children":null,"spread":false}],"spread":true},{"title":"bin","children":[{"title":"Release","children":null,"spread":false},{"title":"Debug","children":[{"title":"MVVMDemo.exe.config <span style='color:#111;'> 184B </span>","children":null,"spread":false},{"title":"MVVMDemo.exe <span style='color:#111;'> 16.00KB </span>","children":null,"spread":false},{"title":"MVVMDemo.pdb <span style='color:#111;'> 47.50KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"Properties","children":[{"title":"Resources.Designer.cs <span style='color:#111;'> 2.80KB </span>","children":null,"spread":false},{"title":"Settings.Designer.cs <span style='color:#111;'> 1.08KB </span>","children":null,"spread":false},{"title":"Settings.settings <span style='color:#111;'> 201B </span>","children":null,"spread":false},{"title":"AssemblyInfo.cs <span style='color:#111;'> 2.12KB </span>","children":null,"spread":false},{"title":"Resources.resx <span style='color:#111;'> 5.48KB </span>","children":null,"spread":false}],"spread":true},{"title":"View","children":[{"title":"StartView.xaml.cs <span style='color:#111;'> 543B </span>","children":null,"spread":false},{"title":"StartView.xaml <span style='color:#111;'> 2.83KB </span>","children":null,"spread":false}],"spread":true},{"title":"App.xaml.cs <span style='color:#111;'> 335B </span>","children":null,"spread":false},{"title":"DataHelper","children":[{"title":"TeacherDataHelper.cs <span style='color:#111;'> 842B </span>","children":null,"spread":false},{"title":"StudentDataHelper.cs <span style='color:#111;'> 896B </span>","children":null,"spread":false}],"spread":true},{"title":"Commands","children":[{"title":"RelayCommand.cs <span style='color:#111;'> 1.45KB </span>","children":null,"spread":false}],"spread":true},{"title":"ViewModel","children":[{"title":"StartViewViewModel.cs <span style='color:#111;'> 2.95KB </span>","children":null,"spread":false}],"spread":true}],"spread":false},{"title":".vs","children":[{"title":"FristMVVMProject","children":[{"title":"v17","children":[{"title":".suo <span style='color:#111;'> 99.50KB </span>","children":null,"spread":false}],"spread":true},{"title":"FileContentIndex","children":[{"title":"1233674d-e284-4800-b840-29fc13883bd4.vsidx <span style='color:#111;'> 8.47KB </span>","children":null,"spread":false},{"title":"9acd497e-1a3b-49cb-8588-a65b4f172704.vsidx <span style='color:#111;'> 31.61KB </span>","children":null,"spread":false},{"title":"read.lock <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"b6b184bf-4382-4dcf-b74b-9b962cbccbe2.vsidx <span style='color:#111;'> 12.80KB </span>","children":null,"spread":false},{"title":"merges","children":null,"spread":false},{"title":"21476b66-b882-4600-948b-4237ecd464a0.vsidx <span style='color:#111;'> 10.60KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"MVVMProject","children":[{"title":"v17","children":[{"title":".suo <span style='color:#111;'> 46.00KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"MVVMProject.sln <span style='color:#111;'> 914B </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明