NDepend v4.1 adds CQLinq killer feature and support for Windows Store apps

I already blogged about NDepend basic features here: I was positively impressed by the capabilities of this tool by fellow MVP Patrick Smacchia.

NDepend permits you to examine .NET projects and highlight different metrics in the code in order to better analyse what areas of your solution needs refactoring for improving performance, code maintainability, application stability and applying best coding practices (just to name a few).

Some features, already available in the previous versions of NDepend, include tools for visually representing dependencies between classes, defining custom rules on code, explore code diffs and analyse code coverage. These ones are particularly helpful when the size of the project grows: a visual representation helps the developer to better identify areas that needs more work (and then save development time).

Recently Patrick contacted me for highlighting the new features available in NDepend v4.1. I was very pleased to find support for Windows Store apps but another capability got immediately my attention: CQLinq.

This is a killer feature: CQLinq (acronym for Code Query LINQ) enables the developer “to query the code” for retrieving information about it. Some simple examples of queries could be:

  • find me the methods too big / too complex;
  • find the methods added but poorly covered by tests;
  • get information about naming conventions;
  • any other query you like: the possibilities are not limited at all!

Technically these queries can be constructed using the traditional LINQ syntax and the types defined in the NDepend.CoreModel of the NDepend API.

The best place to start using CQLinq is here by exploring the dedicated section on the site which contains a ton of different examples to start: I recommend to try and run the available samples which are an excellent starting point and then modifying them for custom queries.

I’ve been really impressed by CQLinq and I can’t wait to use it on real projects to enhance the quality of the code and then reduce the time needed for new implementations.

Happy coding everyone!

MultiTouch Behaviors available on NuGet

I’ve received several requests for publishing the MultiTouch Behaviors on the NuGet gallery so I created a simple package containing support for the Windows Phone and Silverlight platforms.

To enable your project for MultiTouch, just run the following command in the Package Manager Console and all the libraries and dependencies will be added to the Visual Studio project:

PM> Install-Package MultiTouchBehaviors

Alternatively just search for the package selecting Tools->Library Package Manager->Manage NuGet Packages for Solution from Visual Studio 2012.

If you are interested in creating a NuGet package for your open-source project, register an account here in the gallery and follow the instructions described in the section “Creating and Publishing a Package“: they are very clear and contain detailed information about the process.

The package definition for MultiTouch is also available in the Source Code section on CodePlex.

Happy Coding!

Multi-Touch Behaviors updated: Windows Phone “Mango” support, Manipulation / Inertia Processors and more

I’ve just published on CodePlex and the Expression gallery a new release of the Multi-Touch behaviors including these new features:

  • support for Windows Phone 7.1 Beta 2 (refresh) “Mango”;
  • added new property “IgnoredTypes” for excluding particular control types from the manipulations (thanks to Richie for the suggestions, feedback and code samples);
  • the “Manipulation Processor” and “Inertia Processor” are now exposed by the behavior in order to enable personalized manipulations and gestures;
  • new properties: CenterX, CenterY, Rotation, Scale permit to support custom gestures like “DoupleTap” zoom;
  • Silverlight 4 and Windows Phone 7.1 samples updated with a simple “DoubleTap” zoom example using the new exposed properties.

The source code and samples are available for download here.

Happy Silverlighting!

Prism 4.0 – Useful Resources and Templates (including MEF support)

A quick shoutout to point out that David Hill has just released a new version of the PRISM Template Pack now including both MEF and Unity support.

Other useful resources about PRISM 4.0:

Using the Multi-Touch Behavior in a Windows Phone 7 Multi-Page application

In these days I’m receiving several questions in the Multi-Touch Behaviors forums about enabling Multi-Touch manipulations in Windows Phone applications composed by more than one page.

Today I’ve modified the available sample inserting an additional page containing an image enabled for translation, rotation, zoom and inertia via the usual “MultiTouchBehavior“:


Starting from release 0.6.1 it’s now possible to use the Behavior in different pages of the application, in this way enabling multi-touch in different elements of a Windows Phone 7 application.

As usually the sample code is available for download on http://multitouch.codeplex.com, check out the Visual Studio solution “SilverlightWP7MultiTouch.sln” which contains all necessary libraries.

Happy Silverlighting!

Adding / Removing the Multi-Touch Blend Behavior using C# code-behind

I’ve received several requests about the modalities of enabling multi-touch on a UI element using the Behavior available on my CodePlex project.

The traditional syntax using XAML is here:

<Image Source="Images/Desert.jpg" x:Name="image1">
    <interactivity:Interaction.Behaviors>
        <Silverlight4:MultiTouchBehavior 
            IsInertiaEnabled="True"
            IsTranslateXEnabled="True" 
            IsTranslateYEnabled="True"
            IsRotateEnabled="True" 
            IsScaleEnabled="True"
            MinimumScale="10" MaximumScale="100"
            AreFingersVisible="True"/>
    </interactivity:Interaction.Behaviors>
</Image>

What about if you want to achieve the same result using C#? Just obtain a collection of behaviors for your element and then add/remove the MultiTouchBehavior using the following syntax:

private void btnAttach_Click(object sender, RoutedEventArgs e)
{
    var behaviors = 
        System.Windows.Interactivity
        .Interaction.GetBehaviors(image1);
    behaviors.Clear();
    var mtb = new MultiTouchBehavior
    {
        IsRotateEnabled = true,
        IsScaleEnabled = true,
        IsTranslateXEnabled = true,
        IsInertiaEnabled = true,
        AreFingersVisible = true,
        MinimumScale = 20,
        MaximumScale = 200
    };
    behaviors.Add(mtb);
    mtb.Move(new Point(200, 150), 45, 100);
}

private void btnDetach_Click(object sender, RoutedEventArgs e)
{
    var behaviors = 
        System.Windows.Interactivity
        .Interaction.GetBehaviors(image1);
    if (behaviors.Count > 0)
    {
        behaviors.Clear();
    }
}

As usually the source code is available for download on the Multi-Touch CodePlex project (check out the SilverlightWP7MultiTouch Solution).

Oh, did I already say that it also works on Windows Phone 7? 😉

Happy Silverlighting!

TechDays WPC 2010: I’ll be there! Speaking about Silverlight, Multi-Touch and Natural User Interfaces

This year I’ll be presenting about “Silverlight, Multi-Touch and Natural User Interfaces” at the Techdays WPC 2010 conference in Milan on November, 25 2010.

The same day I’ll be also at the MVP booth, if you’re attending the conference come and say Hi! 🙂

Happy Silverlighting!

Book preview: Silverlight 4 User Interface Cookbook

Check out the new book “Silverlight 4 User Interface Cookbook” by Vibor Cipan:

This is the overview taken from the publisher site:

  • The first and only book to focus exclusively on Silverlight UI development.
  • Have your applications stand out from the crowd with leading, innovative, and friendly user interfaces.
  • Detailed instructions on how to implement specific user interface patterns together with XAML and C# (where needed) code, and explainations that are easy-to-understand and follow.
  • Real world projects which you can explore in detail and make modifications as you go.
  • Written by Vibor Cipan – Microsoft MVP for Expression Blend and WPF, and Silverlight UX specialist.

I’ve just received my copy and I’m looking forward to read it in the next days!

Book preview: Microsoft Silverlight 4 and SharePoint 2010 Integration

Check out the new book “Microsoft Silverlight 4 and SharePoint 2010 Integration” by Gastón C. Hillar:

This is the overview taken from the publisher site:

  • Develop Silverlight RIAs that interact with SharePoint 2010 data and services
  • Explore the diverse alternatives for hosting a Silverlight RIA in a SharePoint 2010 Page
  • Work with the new SharePoint Silverlight Client Object Model to interact with elements in a SharePoint Site
  • Use Visual Studio 2010’s new features to debug Silverlight RIAs that interact with SharePoint 2010
  • Learn to perform CRUD (Create, Read, Update, and Delete) operations on SharePoint 2010 lists from Silverlight
  • Access and interact with external data sources and WCF Data Services
  • Use themes and work with multiple interactive animations and effects to create distinct User eXperiences (UX) in a SharePoint environment
  • Develop Silverlight RIAs that interact with SharePoint Visual Web Parts
  • A step-by-step, fast-paced book that guides you in implementing Silverlight 4 applications in SharePoint 2010 environments

A sample chapter is available for download here: Chapter No. 1 – Integrating Silverlight 4 with Share Point 2010

I’ve just received my copy and I’m looking forward to read it in the next days!

Windows Phone 7, Multi-Touch Behaviors and the Surface samples for Silverlight

I’ve just finished some experiments using the Windows Phone 7 emulator and the “Microsoft Surface Manipulations and Inertia Sample for Microsoft Silverlightin order to enable Multi-Touch gestures using Blend Behaviors:

WP7BehaviorExpression

This new implementation, now available for download in the Expression Gallery, permits to enable Multi-Touch gestures (the usual translation, rotation, zoom and inertia) on separate User Controls available in the same container.

In this way you can apply distinct Multi-Touch manipulations (inertia included) to single elements using a single code in xaml:


  <canvas>
      
          
               
          
      

      
          
             
          
      
  </canvas>

Alternatively you can use Blend inserting a reference to the project MultiTouch.Behaviors.Silverlight.WP7 and then dragging the MultiTouchManipulationBehavior from the Assets section to the  control to be touch-enabled:

Multi-Touch Behavior Blend

 

Considerations

This one has been an interesting exercise in porting code written for Silverlight to Windows Phone: I had only to create a Windows Phone 7 project and add to it the code already available for the Silverlight version and all worked well quite quickly.

Limitations

At this time the behavior works only in the fixed Portrait orientation of Windows Phone: if you change to Landscape the manipulation doesn’t work well. I’ll have to investigate further and currently I don’t have a physical device to test (I’d really love to have a device to try it :)).

Happy Silverlighting!