参考地址

模块注入框架(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. 没解决的问题-git连接失败

    [parallels@localhost ~]$ ssh-keygen -t rsa -C '1012144290@qq.com'Generating public/private rsa key p ...

  2. debian / deepin (Ubuntu)安装 mariadb

    debian / deepin 安装 mariadb 安装步骤: LINUX安装mariadb本质和mysql一致,可以参考官网教程进行安装.https://mariadb.org/download/ ...

  3. jquery 操作表格 jQuery操作表格(table)的常用方法、技巧汇总

    以下列出13个jQuery操作table常用到的功能: 1.鼠标移动行变色 $('#table1 tr').hover(function(){ $(this).children('td').addCl ...

  4. ubuntu18 build opencv4 from source

    1 安装依赖 ## Install dependencies sudo apt -y install build-essential checkinstall cmake pkg-config yas ...

  5. c语言 开灯问题 vs2019编译通过

    1 #include<stdio.h> 2 #include<stdlib.h> 3 //开灯问题 4 //总共有n盏灯,编号为1~n,k个人 5 //第一个人摁下所有灯的开关 ...

  6. redis常用命令之string&list

    redis常用操做 string key操作 string <key:value> set name johnget name list setnx <key value>se ...

  7. stream 链式结构

    Double totalPaymentAmount = Optional.ofNullable(wayfairMonthBill.getPaymentAmountDetailJson()) .filt ...

  8. java 动手动脑 方法重载

    如下代码://MethodOverload.java //Using overloaded methods package HJssss; public class zhuce { public st ...

  9. JDK、JRE、JVM和i++

    JRE:运行环境(包含JVM和JAVA核心类库) JDK:JAVA开发工具包(包含JRE和开发工具)----开发工具:指编译工具javac和运行工具java JVM:虚拟机,保证了跨平台 ++i:先运 ...

  10. .NET在单台Windows2008下百万TCP连接测试

    测试客户端: 客户端程序建立TCP连接,发送一条几个字节的数据. 虚拟机8台,PC机8台,服务器1台. 设置MaxUserPort=60000,有一台机没有设置约在1.5万左右.最后因为差一点到100 ...