How to use an eXpand module with an existing XAF application

eXpandFramework in Scott Hanselman

How to debug eXpandFramework

Instalation

Get eXpandFramework from the download page

  • The installer  adds the assemblies in the GAC, adds components in the toolbox includes the sources, adds a registry entry @ HKLM/Software/Wow6432Node/Microsoft/.NetFramework/AssemblyFolders/Xpand and installs the Xpand.VSIX package.

    You can install a module by performing any of the following actions.
    a) Drag & drop from the toolbox on a module designer. (The first time you open the toolbox it will populate all components and it may take some time.)
    toolbox
    b) Use the eXpandFramework Solution Wizard to create a new solution.
    solutionwizard

    The Wizard first will display the XAF solution wizard allowing to configure your XAF solution.
    xafwizard

    When the XAF wizard will finish and depending on your configuration a popup form will allow you to choose which eXpandFramework modules you wish to install.
    expandpopu

    If you have an existing solution Xpand.VSIX adds an entry to the related menu that will display the same module chooser form.
    addXpand
    c) Add the module in the requiredModuleTypes collections. For e.g say you want to register the WorldCreator module you need to add this line in your WinModule.Designer.cs,
    this.RequiredModuleTypes.Add(typeof(Xpand.ExpressApp.WorldCreator.Win.WorldCreatorWinModule));
    registering the agnostic platform WorldCreator can also be done similarly in your Module.Designer.cs but is optional. You will be notified in details what you have to do If further actions required by the compiler.


  • Nugget packages do not provide a design time support so you need to register manually the modules you want as described previously.
    The nugget packages also include the symbols (pdb files) which link to the online repo so you do not need the sources in order to debug the framework.
  • VSIX package contains VS commands, menus, tools, templates for working with XAF and eXpandFramework (optional).
  • The libs contained a pre-compiled version of all assemblies along with the symbols which are linked to the online repo so you do not need to get the sources for debugging the framework.
  • The sources may differ a bit from the online repro as they are optimized from the buildserver. So we recommend you use them from the download page instead of github unless you know what you are doing.

OverView

eXpandFramework follows XAF best practices so everything you know already about XAF (modules,controllers, propertyeditors etc) are avaliable as well here under a similar folder structure. So, instead of spending our limited recourse to doument what you already know about XAF artifacts we chose to make new implementations and assure a stable framework . The source code is open sourced and by exploring it a bit is easy to tell what is supported from each module. In addition you may also get a brief from the blogposts linked to each module in www.expandframework.com

For example an overview of the framework can be obtained by browsing the next links (note that the links point to 17.1 branch and you may need to change it to see future branches):

System Modules

Shared Libs (referenced from all modules)

Extra Modules  (This link lists all modules and you can explore its one seperately, similary to the next links)

    ModelDifference Module

    ModelDifference Module Win

    ModelDifference Module Web

    Dashboard

    WorldCreator

The above links are just an indication and not a complete list of what is included in the framework. Feel free to explore the rest and ask questions in the public forums.

All eXpandFramework artifacts are mapped to the XAF model allowing you to declaratively control them. 

To get a taste of how much eXpandFramework will enrich your model compare the next screenshots.

Model Options

 

 

 

ListView

 

 

 

DetailView

 

 

 Mapped Controls 

 Finally the project is actively devloped and supported, feel free to use the public forums for bugs, suggestions, questions etc..