如何开发一款便捷美观的WPF界面
C#+WPF+MVVM+导航路由+MEF(一)
大家好!这篇文章是我在从事6年上位机开发,3年WPF开发经验后总结的一套比较实用的WPF开发方案,这篇文章比较适合初学者入门搭建属于自己的一个WPF上位机系统软件MVVM模式,初步的集成了日志,缓存,导航路由和MEF懒加载来实现插件之间的解耦。
走进WPF
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
wpf支持传统winfrom的编程手法,就是在页面的cs文件下直接写业务逻辑,但是这样做,很明显。无法发挥出wpf其独特的优势。就是用MVVM模式编程。实现前后端业务层面的分层解耦。
MVVM模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。
例如MVC最直观的就是ASP.net的网页编程框架。
MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
所以说MVVM 格式是一种相当先进的和优质的编程框架。
走进第一个WPF程序
首先我们先来搭建一个我们的初步的wpf的框架。
初次创建项目系统会出现了一个xaml页面-mainwindows。这个将是你的初始页面。
但是我们肯定是不满足只有这么一个单独的页面的。
我们依次创建我们的文件夹
Model(存放数据模型),Resources(存放资源字典和转义的类文件),Setting(存放可配置类),View(存放前端页面),ViewModel(存放后端逻辑类)
接下来我们开始创建基础的命令类,创建在Resources文件夹内。用于实现WPF 的mvvm框架的命令绑定
/// <summary>
/// 命令基类
/// </summary>
public class BaseCommand : ICommand
{
public event EventHandler CanExecuteChanged
{
add
{
if (_canExecute != null)
{
CommandManager.RequerySuggested += value;
}
}
remove
{
if (_canExecute != null)
{
CommandManager.RequerySuggested -= value;
}
}
}
public bool CanExecute(object parameter)
{
if (_canExecute == null)
{
return true;
}
return _canExecute(parameter);
}
public void Execute(object parameter)
{
if (_execute != null && CanExecute(parameter))
{
_execute(parameter);
}
}
private Func<object, bool> _canExecute;
private Action<object> _execute;
public BaseCommand(Action<object> execute, Func<object, bool> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
public BaseCommand(Action<object> execute) :
this(execute, null)
{
}
}
要实现MVVM。我们得了解,MVVM解耦,解的是什么。一个是前端的数据。一个是前端的执行命令。
对于前端数据的解耦。我这推荐一个好用的扩展。在Nuget程序包中找到这个Fody插件,安装添加到项目中。
通过类名上的[AddINotifyPropertyChangedInterface]实现数据绑定。
在ViewModel的文件夹中创建MainViewModel.cs的类。这个类主要是用于处理后端的业务逻辑,同时绑定对应的命令和数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。