WinForms MVVM

This section is dedicated to the Model-View-ViewModel (MVVM) architectural pattern. You will find all required info about its basic concepts and ways to implement it in WinForms applications. The 'Tutorials' group contains multiple step-by-step tutorials that accumulate theoretical concepts from the 'Concepts' group to create a sample application, built entirely in accordance to all MVVM concepts.

 

What is MVVM?

 

The MVVM pattern is well-known among WPF developers. The main idea of this pattern is separating your application into three semi-independent layers.

  • Model - the data layer. Refers either to a domain model, which represents the real state content (an object-oriented approach), or to the data access layer that represents that content (a data-centric approach).
  • View - the user interface layer. Contains all elements displayed by the application GUI (buttons, panels, labels, editors, etc.).
  • ViewModel - the nexus between a Model and a View. This layer is an abstraction of the View that exposes public properties and commands, used to bind your data to GUI elements and manage this data.

The diagram below illustrates MVVM layers and their communication means.

By separating the graphical user interface from the business logic, this pattern provides multiple advantages, such as more efficient code management (e.g., covering it with unit tests) or the ability to modify the application interface without needing to touch your business logic.

 

MVVM in WinForms. Presenter.

 

The MVVM pattern was introduced specifically for the WPF platform. WinForms developers who will try to follow its concepts will eventually face multiple major issues, for instance:

  • data binding in WinForms is more complex and less agile;
  • WinForms platform features only events and methods instead of bindable WPF commands.

These issues force WinForms developers to write a decent amount of additional code behind. This code is often considered as a separate fourth layer - Presenter. Presenter manages all interaction between a ViewModel and a View that goes beyond simple command bindings and extends the "pure" MVVM pattern into MVPVM.

Typically, the Presenter layer includes the following:

  • UserControls and their code behind;
  • internal classes;
  • methods that tweak and customize controls within the View;
  • event handlers;
  • bindings;
  • other specific code snippets.

Thus, the WinForms platform has multiple limitations, which ultimately meand that WinForms developers will have to code more. The DevExpress MVVM Framework offers another way of overcoming all the mentioned issues.

 

DevExpress MVVM Framework

 

Since MVVM is nothing more than a concept rather than a set of strict rules to follow, developers can implement it differently depending on their needs. Many third-party vendors offer different approaches to introduce these concepts to your application development. DevExpress makes no difference has its own vision of MVVM and its own framework to implement it.

What truly excels the DevExpress MVVM Framework is its cross-platform nature: the one framework to develop both WPF and WinForms apps with ease and elegance. This framework extends the WinForms platform and grants it the following features, which it originally lacks:

  • flexible data bindings;
  • commands and command bindings;
  • behaviors and services;
  • an advanced way to implement notifications and commands.

Other benefits are:

  • the MVVM Context component, available from the toolbox that simplifies creating MVVM applications;
  • POCO classes support;
  • rich interoperability with other DevExpress WinForms controls;
  • Template Gallery templates, created specifically for MVVM apps;
  • fluent API and Data Annotation Attributes support;
  • various design time capabilities.

All these features allow you to create an almost "pure" MVVM application and get rid of the Presenter layer (and thus of excessive code).

 

MVVM Learning Center

 

The MVVM pattern can be tricky to learn for developers that have never used it before. To ensure your quick start into MVVM development, this documentation is bound with the 'MVVM Best Practices' demo, available from the DevExpress Demo Center. This demo contains dozens of small samples, grouped into modules. Every document from the 'Concepts' section has a code sample and a notification that shows which demo example is linked to this text block. Thus, instead of copying code samples to your test application, you can simply launch the demo, choose the related module and check out how this or that feature works. The following figure illustrates regions of this demo.

  1. Module Chooser. Selects the current demo module. Each module contains multiple examples, dedicated to the specific topic (e.g., data bindings or commands). There are three groups of demo modules:

    • API Code Examples. Each module from this section contains tiny samples that illustrate how most basic tasks are implemented.
    • Navigation. This group contains modules that illustrate how to build the sample 'Expenses' application based on various services. The Tutorials section contains tutorials that help you to create this sample app all by yourself.
    • Views. Modules in this group illustrate edit forms from the sample 'Expenses' application built using different layout controls.
  2. Example Chooser. Lists all examples, available for the selected module.
  3. Live Example Code. Highlights the code region that provides the target functionality, illustrated in this example. You can modify this code right in the demo window.
  4. Preview Section. An example preview, updated on the fly in accordance to the code from the Live Example Code region.
  5. Run In Visual Studio. Launches your Visual Studio with the currently viewed example as a project. This allows you to observe the entire example code.

The entire demo is also available as a separate Support Center example. Coupled with this documentation section, the MVVM Best Practices demo creates a powerful learning center for you to discover the DevExpress MVVM Framework and test it on live examples at the same time.

 

MVVM Documentation Sections

 
  • Concepts
    This section gathers
    documents that illustrate how to implement most basic tasks using the DevExpress
    Framework: bind properties, create and bind commands, use triggers to update one
    UI element in accordance to another, convert values of bindable properties,
    implement layer communication and much more.
  • Design-time Support
    Includes
    articles that introduce design-time features that allow you to code less. The Control-based Services topic describes in
    details all DevExpress services, first mentioned in the Services document.
  • Tutorials
    A set of step-by-step
    tutorials that guide you through the process of creation of the sample
    'Expenses' application.

devexpress WinForms MVVM的更多相关文章

  1. DevExpress WinForms使用教程:皮肤颜色和LookAndFeel

    [DevExpress WinForms v18.2下载] v18.2版本中更改了控制背景颜色和皮肤一起处理的方式.在v18.1中引入了Project Settings页面,其中包含一个skin se ...

  2. Devexpress Winform MVVM

    归纳总结备忘 Devexpress Winform MVVM Practice 前言 MVVM Devexpress 正文 databindings及 UI Triggers Command 委托Co ...

  3. DevExpress WinForms使用教程:SVG图库和Image Picker

    [DevExpress WinForms v18.2下载] 每个新版本都在几个新控件中引入了矢量图标支持. 对于v18.2,这是列表: BackstageViewControl及其项目 RecentI ...

  4. DevExpress WinForms使用教程:Ribbon性能

    [DevExpress WinForms v18.2下载] DevExpress XAF团队提供Ribbon新能改进,其中XAF Office Module的实际应用程序需要花费很长时间才能加载,导致 ...

  5. DevExpress WinForms使用教程:新的CheckEdit样式

    [DevExpress WinForms v18.2下载] 在最开始CheckEdit控件有16种样式, 使用CheckStyle属性,开发人员可以选择其中一种样式.随着时间推移,与其他Windows ...

  6. DevExpress WinForms使用教程:Diagram Control

    [DevExpress WinForms v18.2下载] DevExpress WinForms v18.2包含WinForms和WPF Diagram Controls的三个高要求功能:新的Dia ...

  7. DevExpress WinForms使用教程:Data Grid - Find Panel模式

    [DevExpress WinForms v18.2下载] DevExpress WinForms用户都熟知,Data Grid是整个产品线的主要产品.在v18.2中添加了一些新的功能,例如之前教程中 ...

  8. DevExpress WinForms使用教程:图表控件 - 内置深入查询

    [DevExpress WinForms v18.2下载] 在最新发布的DevExpress WinForms v18.2中,DevExpress WinForms和ASP.NET图表控件引入嵌套系列 ...

  9. DevExpress WinForms使用教程:WinForms Sunburst控件

    [DevExpress WinForms v18.2下载] DevExpress WinForms v18.2中包含了一个新的WinForms组件 - WinForms Sunburst,它旨在帮助开 ...

随机推荐

  1. JAVA 泛型的参数的传递示意图

    泛型的两种参数传递方式

  2. 11.枚举类.md

    目录 1.定义: 2.枚举类和普通类的区别: 2.1枚举类的简单构建: 2.2枚举类的成员变量.方法和构造 2.3实现接口的枚举类 1.定义: 2.枚举类和普通类的区别: 枚举类的默认修饰符是 pub ...

  3. tensorflow 之tensorboard 对比不同超参数训练结果

    我们通常使用tensorboard 统计我们的accurate ,loss等,并绘制曲线,通常是使用一次训练中的, 但是,机器学习中通常要对比不同的 ‘超参数’给模型训练和预测能力的不同这时候如何整合 ...

  4. hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  5. Numpy知识(二)

    ndarray的简单数学计算就和普通的a+b,a-b,a*b,a/b等类似. 关于ndarray的切片: arr[n]:寻找第n个元素(针对一维)arr[n:m]:从下标为n元素开始,截取到下标为m- ...

  6. pandas 数据结构基础与转换

    pandas 最常用的三种基本数据结构: 1.dataFrame: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Data ...

  7. Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final

    Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final

  8. elastic search文档详解

    在elastic search中文档(document)类似于关系型数据库里的记录(record),类型(type)类似于表(table),索引(index)类似于库(database). 文档一定有 ...

  9. appium +ios 判断元素是否存在,排除visible=“false”的数据

    问题 想要判断name=xxx的元素是否存在,存在的话进行点击,结果页面并没有展示我要的元素时也提示找到了元素   原因 ios通过driver.find_element_by_name(“name值 ...

  10. oracle连接错误:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决

    自己的解决办法是,把数据库连接字符串的默认SID_NAME = ORCL改为 sid_name =test(自己安装数据库时候改的名字).即可正常连接. 网上搜罗的其他问题:把监听服务重启下.(自己的 ...