ctodx

This Blog

News

Favorite Posts

Archives

December 2016 - Posts

  • DevExpress VCL Subscription v16.2 released

    As is usual here at DevExpress during major release time, we like to stagger the publication of our .NET/web Universal and our VCL products. Our poor marketing folk need a bit of a breather between the two, so we give them a week or so to recover before we publish the VCL Subscription release.

    Well, there’s no need to wait any longer: the VCL team has completed their testing of the build and it was published to the Download Center early this morning, my time. If you have an active VCL subscription (whether it’s the full one or one of the Packs) you can go now to our Download Center, log in, and download the latest and greatest. Version 16.2.

    For what’s new in this release, please go to this page, click on the VCL button under the main banner, and read all about the enhancements we’ve provided.

    I shall be presenting a webinar tomorrow (Wednesday, 21 December, at 10:00am Pacific Time) on the new features. Please register.

    Some two or three months ago, we sent out an email to our customers with a survey about what we should/should not do with regard to FireMonkey controls. At the time, we specifically stated that nothing would happen for 2016 (which is why there’s no “FireMonkey Suite” being published alongside the VCL Subscription), but that once v16.2 was out, we in management would lock ourselves away in a room with the VCL team and discuss how/when/who/what with regard to where we go with our RAD-Studio-based offerings. We shall be making as much use of our partner relationship with Embarcadero as we can. Stay tuned, is really all I can say for now.

    I’d like to extend our thanks to our VCL customers, some of whom have certainly been with us since the very start of Developer Express. We hope that what we’ve provided in v16.2 is going to mess with your plans for Christmas and the New Year as you incorporate the new features inside your apps. Just joking! Seriously, if you have any feedback about the release or about our future plans, don’t hesitate to add a comment below, or email me or Client Services. Thank you, again.

  • DevExpress Universal v16.2 released

    From the myriad blog posts you’ve seen here on our Community Site recently, all labeled “Coming Soon in v16.2”, I’m sure you’ve been anticipating our second major release of the year, knowing that it is just around the corner. Well, wait no more: the teams completed their testing of the build and it was published to the Download Center early this morning, my time. If you are an active customer – er, that is, you have an active subscription, I’m not commenting on your level of exercise! – you can go now to our Download Center, log in, and download the latest and greatest.

    universal-16.2-awards-facebookFor what’s new in this release, please go to this page and read all about the enhancements we’ve provided.

    For every major release, no matter how hard we try, the new features and enhancements are bound to cause a few breaking changes. We do make an effort to minimize their number and impact, but there will be some. (I wrote about this last time for the v16.1 release.) You can read about the v16.2 breaking changes here. As it happens that new site is now fully interactive: you can select to see the breaking changes for a particular version, or the known issues and the resolved issues. You can even elect to view what changes are applicable when upgrading from a previous version.

    Part of the process of releasing a major version like this involves many people doing many jobs. Development, documentation, blogs, marketing, and so on. One of these jobs is writing the Press Release, and I was interested to learn in the one that’s just about to go out that, over the past 4 years, DevExpress has won 38 first place Visual Studio Magazine Readers’ Choice awards. Those are awards that are based on votes from the readers of VSM, and we are really grateful to the people who through their development work have decided that DevExpress products are so good, they’re worth voting for. Thank you. We hope that what we have in v16.2 (and what we are preparing for v17.1) is going to validate that trust in and appeal of our products.

  • DevExpress MVVM for WPF - New Module Injection Framework Coming Soon in v16.2

    Wait, what? What’s a Module Injection Framework – or MIF – and how is it used? The mile-high overview is that a MIF makes it easier to develop, test, maintain, and deploy applications built with loosely-coupled modules. Such a modular application is one that is divided up into a set of functional units, which are independent from each other. Although viewed as separate, these modules can, if needed, communicate with each other through well-defined contracts that you define. This separation of concerns means that modules can be developed and tested independently of each other.

    1. Common Concepts

    Using MIF terminology, a module is a set of Views and ViewModels (which can in turn contain submodules) that are injected into regions. A region is merely a placeholder in the application's UI.

    MVVM MIF regions and modules

    Using the DevExpress MIF, you can create modules and register them via the ModuleManager:

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

    A region is a control that is marked by an attached property:

    <TabControl dxmvvm:UIRegion.Region="RegionA" .../>

    Modules are injected to regions when you call the Inject() method:

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

    2. Navigation

    You can perform navigation tasks anywhere/anywhen in your application, only knowing the key of the module and the name of the target region:

    ModuleManager.Navigate(regionName: "RegionA", key: "Module1")

    You can also define navigation logic globally. For example, suppose you have two regions in your app: a navigation region and a document region, such as in the image previously shown. An end-user uses the navigation control in its region to navigate to a document, and this is then shown in the document region (which could be a TabControl, for example).

    With MIF, you can say:

    “When a module in the navigation region becomes active – activate the corresponding module in the document region.”

    And also:

    “When a document in the document region becomes active – activate the corresponding module in the navigation region.”

    ModuleManager.GetEvents(regionName: "NavigationRegion").Navigation += OnNavigationRegionNavigation;
    
    void OnNavigationRegionNavigation(object sender, NavigationEventArgs e) {
        ModuleManager.Navigate(regionName: "DocumentsRegion", key: ((MyNavigationViewModel)e.ViewModel).DocumentKey);
    }
    
    //...
    
    ModuleManager.GetEvents(regionName: "DocumentsRegion").Navigation += OnDocumentsRegionNavigation;
    
    void OnDocumentsRegionNavigation(object sender, NavigationEventArgs e) {
        ModuleManager.Navigate(regionName: "NavigationRegion", key: ((MyDocumentViewModel)e.ViewModel).NavigationKey);
    }

    3. Tests

    MIF makes it really easy for you to write unit tests for your navigation logic.

    ModuleManager.Navigate(regionName: "NavigationRegion", key: "NavigationItem1");
    Assert.AreEqual("Document1", ModuleManager.GetRegion(regionName: "DocumentsRegion").SelectedKey);
    
    ModuleManager.Navigate(regionName: "DocumentsRegion", key: "Document2");
    Assert.AreEqual("NavigationItem2", ModuleManager.GetRegion(regionName: "NavigationRegion").SelectedKey);

    4. Save and Restore Application State

    Like it or not, our users expect our applications to save its state and to restore it when restarted. There are several types of state an application is expected to manage in this manner:

    • The state of visual controls. Examples are, the selected grouping and column order of a GridControl, or the position of panels in a DockLayoutManager.
    • Dynamically injected modules, which can be automatically injected on startup. One example of this are the open tabs in a browser.
    • The state of particular View Models.

    The DevExpress MIF refers to the first type of state as visual state. The second and third types are grouped into logical state.

    The ModuleManager.Save() method allows you to query the current application state.

    void Save(string regionName, out string logicalState, out string visualState); 

    The ModuleManager.Restore() method restores the saved application state when called.

    bool Restore(string logicalState, string visualState); 

    5. MVVM MIF Template

    To get you started, we’ve added a new project template in our Template Gallery. It generates a simple MIF application.

    MVVM MIF app template


    Are you using our MVVM with our WPF controls? What do you think of this new feature? Do you think you’ll be trying out this new MIF? Please let us know either below or by emailing us at info@devexpress.com.

LIVE CHAT

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383

FOLLOW US

DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2017 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners