参考地址

模块注入框架(MIF)是一组帮助MVVM应用程序的类。它提供以下功能

  • 将ViewModel连接到视图
  • 页面之间导航
  • 保存和恢复应用程序的可视和逻辑状态
  • 单元测试
模块

模块是应用程序的功能单元。关于模块注入框架(MIF),模块是将ViewModel绑定到其视图的结构。每个模块实现IModule接口。

本主题介绍如何注册和控制模块

基本信息

IModule 接口如下所示

public interface IModule {
string Key { get; }
Func<object> ViewModelFactory { get; }
string ViewModelName { get; }
string ViewName { get; }
Type ViewType { get; }
}

MIF提供了一个快速的IModule实现-模块类。使用模块管理器注册方法和模块

ModuleManager.DefaultManager.Register(
regionName: "RegionA",
module: new Module(
key: "Module1",
viewModelFactory: () => new Module1ViewModel(),
viewType: typeof(Module1View)
)
);

您可以通过其键显示 、激活或删除已注册的模块

ModuleManager.DefaultManager.Inject(regionName: "RegionA", key: "Module1");
ModuleManager.DefaultManager.Navigate(regionName: "RegionA", key: "Module1");
ModuleManager.DefaultManager.Remove(regionName: "RegionA", key: "Module1");

模块创建

模块类提供了多个构造函数

/*1.*/ new Module(key: "Module1", viewModelFactory: () => new ModuleViewModel());
/*2.*/ new Module(key: "Module1", viewModelFactory: () => new ModuleViewModel(), viewType: typeof(ModuleView))
/*3.*/ new Module(key: "Module1", viewModelFactory: () => new ModuleViewModel(), viewName: "ModuleView")
/*4.*/ new Module(key: "Module1", viewModelName: "ModuleViewModel", viewName: "ModuleView")
  1. 第一种方法不包含有关View的信息,并且它设置在目标控制级别,例如:

    <ContentPresenter dxmvvm:UIRegion.Region="RegionA" ContentTemplate="{StaticResource ModuleTemplate}"/>

    当您 注入模块1时,MIF将创建模块视图模型实例,并将其传递到目标控件

  2. 第二种方法设置ViewType参数。在这种情况下,MIF为目标审控件创建一个特殊的DataTemplateSelector,该控件基于视图模型选择模块

    <ContentPresenter dxmvvm:UIRegion.Region="RegionA"/>
    //This code is a sketch for demonstration purposes.
    class ViewDataTemplateSelector : DataTemplateSelector {
    string Module1ViewTemplate = "
    <DataTemplate>
    <ModuleView/>
    </DataTemplate>";
    public override DataTemplate SelectTemplate(object viewModel) {
    if(viewModel is ModuleViewModel)
    return new DataTemplate(Module1ViewTemplate);
    return null;
    }
    }
    targetContentControl.ContentTemplateSelector = new ViewDataTemplateSelector();
  3. 第三种方法与第二种方法类似。如果您无法访问“视图”类型,可以使用它

  4. 如果您无法访问ViewModel类型,请使用最后一种方法。

DevExpress 模块注入框架的更多相关文章

  1. 【十】注入框架RoboGuice使用:(Your First Testcase)

    上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天 ...

  2. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  3. Spring.NET依赖注入框架学习--简介

    Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...

  4. Spring.NET依赖注入框架学习--入门

    Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...

  5. Objection, 一个轻量级的Objective-C依赖注入框架

    简介 项目主页:https://github.com/atomicobject/objection 实例下载: https://github.com/ios122/ios122 Objection 是 ...

  6. 史上最好用的依赖注入框架Google Guice【转】

    Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC).Guice非常小而且快. (其他的依赖注入框架还有Dagger,Spring) Spring ...

  7. 放弃dagger?Anrdoi依赖注入框架koin

    Koin 是什么 Koin 是为 Kotlin 开发者提供的一个实用型轻量级依赖注入框架,采用纯 Kotlin 语言编写而成,仅使用功能解析,无代理.无代码生成.无反射. 官网地址 优势 依赖注入好处 ...

  8. .NET Core 中依赖注入框架详解 Autofac

    本文将通过演示一个Console应用程序和一个ASP.NET Core Web应用程序来说明依赖注入框架Autofac是如何使用的 Autofac相比.NET Core原生的注入方式提供了强大的功能, ...

  9. [Android]依赖注入框架google的dagger

    分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...

  10. [Android]依赖注入框架squareup的dagger

    分享一下Android依赖注入框架--Dagger使用 Dagger源码 Dagger1-Demo 希望能给大家的开发带来帮助.

随机推荐

  1. VMware Fusion Pro 13.0.0 最新序列号【转】

    Fusion简介 VMware Fusion是最好的Windows-to-Mac解决方案,是任何平台上最强大的应用开发和测试工具. Fusion 13支持macOS 13.0,为开发者.IT管理员和普 ...

  2. Java常用数据结构

    1.数组 数组(Array) 是一种很常见的数据结构.它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储. 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址 ...

  3. RayLink 远控软件又推出 2 个重磅宝藏功能免费用

    你有没有在远程办公时,担心他人偷窥电脑?以致于保密性资料或私密信息,遭到泄露.创意被剽窃......又或是遇到过邻座同事屏幕前明明没人,鼠标箭头却自个浏览起网页的惊悚画面? 如果你有上述情况,建议使用 ...

  4. babel npm包说明

    babel-plugin-import 用于按需加载,在使用antd 的时候引入,可以减少包体积

  5. eggjs 在vscode调试

    https://eggjs.org/zh-cn/core/development.html?spm=ata.13261165.0.0.3c2f2be9w2ozd8#%E4%BD%BF%E7%94%A8 ...

  6. (jmeter笔记)模拟用户各种场景压测

    插件:standard set 1.jp@gc - Ultimate Thread Group(波浪式压测,最终线程组) Start Threads Count :设置启用并发数 Initial De ...

  7. Godot从编辑器创建自定义场景类型对象

    Godot的编辑器提供了强大的所见即所得功能,并且,我们可以在不从源码编译的情况下,为编辑器提供新的节点类型. 首先,我们创建一个新场景,然后添加一个Node2D,然后为当前节点(Node2D)添加一 ...

  8. bean依赖注入三种方式

    bean依赖注入的三种方式如下: 1.构造方法注入 2.set方法注入 3.P命名空间注入 此处演示的项目结构如下: 方法一: 构造方法注入 UserDaoImpl.java public class ...

  9. mysql 删除数据所有表

    SELECT CONCAT('drop table ',table_name,';') FROM information_schema.`TABLES` WHERE table_schema='car ...

  10. plsql链接oracle

    安装两个oracle文件夹在一个database中,安装plsql 要先配置两个都要修改,不然会找不到服务器 管理员运行  监听服务/监听位置和数据库服务都要修改 ass文件---监听程序配置 和本场 ...