MetroGridHelper for WinRT, a helper to get the alignment right

It’s already more than a year ago that Jeff Wilcox wrote the MetroGridHelper for Windows Phone. I’ve been using it a lot since then. But we now have the option to build WinRT applications, sadly without the MetroGridHelper.

Wait no more, I ported the code from Jeff and also modified it to fit the metro guidelines that exist for WinRT applications. I’ve had some help from Martin Tirion and Matthijs Hoekstra, both working as Evangelist for Microsoft in The Netherlands.

The result is something that helps me during the design of the Windows 8, WinRT, apps.

You can simply install the NuGet Package. Through the console like this:

PM> Install-Package WinRT.MetroGridHelper

And inside your App.xaml.cs you can add the following to the end of the OnLaunched method.

// Place the frame in the current Window and ensure that it is active
Window.Current.Content = rootFrame;
Window.Current.Activate();

//Only when the debugger is attached
if (System.Diagnostics.Debugger.IsAttached)
{
    //Display the metro grid helper
    MC.MetroGridHelper.MetroGridHelper.CreateGrid();
}

screenshot_07252012_204308

screenshot_07252012_204316

screenshot_07252012_204328

The current version only works for WinRT apps that are written in Xaml, though I’m investigating on how to create something similar within HTML5+JS. If you have suggestions for this version please let me know, and I will adjust the MetroGridHelper if they are helpful.

To be complete, you can use the below source code as an alternative to the NuGet Package.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using Windows.UI;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes;

namespace MC.MetroGridHelper
{
    /// <summary>
    /// A utility class that overlays a designer-friendly grid on top of the
    /// application frame, for use similar to the performance counters in
    /// App.xaml.cs. The color and opacity are configurable. The grid contains
    /// a number of squares that are 24x24, offset with 12px gutters, and all
    /// 24px away from the edge of the device.
    /// </summary>
    public static class MetroGridHelper
    {
        private static bool _visible;
        private static double _opacity = 0.15;
        private static Color _color = Colors.Red;
        private static List<Shape> _shapes;
        private static Grid _grid;

        /// <summary>
        /// Gets or sets a value indicating whether the designer grid is
        /// visible on top of the application's frame.
        /// </summary>
        public static bool IsVisible
        {
            get { return _visible; }
            set
            {
                _visible = value;
                UpdateGrid();
            }
        }

        /// <summary>
        /// Gets or sets the color to use for the grid's squares.
        /// </summary>
        public static Color Color
        {
            get { return _color; }
            set
            {
                _color = value;
                UpdateGrid();
            }
        }

        /// <summary>
        /// Gets or sets a value indicating the opacity for the grid's squares.
        /// </summary>
        public static double Opacity
        {
            get { return _opacity; }
            set
            {
                _opacity = value;
                UpdateGrid();
            }
        }

        /// <summary>
        /// Updates the grid (if it already has been created) or initializes it
        /// otherwise.
        /// </summary>
        private static void UpdateGrid()
        {
            if (_shapes != null)
            {
                var brush = new SolidColorBrush(_color);
                foreach (Shape square in _shapes)
                {
                    square.Fill = brush;
                }
                if (_grid != null)
                {
                    _grid.Visibility = _visible ? Visibility.Visible : Visibility.Collapsed;
                    _grid.Opacity = _opacity;
                }
            }
            else
            {
                BuildGrid();
            }
        }

        /// <summary>
        /// Builds the grid.
        /// </summary>
        private static async void BuildGrid()
        {
            _shapes = new List<Shape>();

            var frame = Window.Current.Content as Frame;
            if (frame == null || VisualTreeHelper.GetChildrenCount(frame) == 0)
            {
                await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, BuildGrid);
                return;
            }

            DependencyObject child = VisualTreeHelper.GetChild(frame, 0);
            var childAsBorder = child as Border;
            var childAsGrid = child as Grid;
            if (childAsBorder != null)
            {
                // Not a pretty way to control the root visual, but I did not
                // want to implement using a popup.
                UIElement content = childAsBorder.Child;
                if (content == null)
                {
                    await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, BuildGrid);
                    return;
                }
                childAsBorder.Child = null;
                await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                                                                                            {
                                                                                                var newGrid = new Grid();
                                                                                                childAsBorder.Child =
                                                                                                    newGrid;
                                                                                                newGrid.Children.Add(
                                                                                                    content);
                                                                                                PrepareGrid(frame,
                                                                                                            newGrid);
                                                                                            });
            }
            else if (childAsGrid != null)
            {
                PrepareGrid(frame, childAsGrid);
            }
            else
            {
                Debug.WriteLine("Dear developer:");
                Debug.WriteLine("Unfortunately the design overlay feature requires that the root frame visual");
                Debug.WriteLine("be a Border or a Grid. So the overlay grid just isn't going to happen.");
            }
        }

        public static void CreateGrid()
        {
            IsVisible = true;
        }

        /// <summary>
        /// Does the actual work of preparing the grid once the parent frame is
        /// in the visual tree and we have a Grid instance to work with for
        /// placing the chilren.
        /// </summary>
        /// <param name="frame">The phone application frame.</param>
        /// <param name="parent">The parent grid to insert the sub-grid into.</param>
        private static void PrepareGrid(Frame frame, Grid parent)
        {
            var brush = new SolidColorBrush(_color);

            _grid = new Grid {IsHitTestVisible = false};

            // To support both orientations, unfortunately more visuals need to
            // be used. An alternate implementation would be to react to the
            // orientation change event and re-draw/remove squares.
            double width = frame.ActualWidth;
            double height = frame.ActualHeight;
            double max = Math.Max(width, height);

            const double strokeWidth = 2.0;

            var horizontalLine = new Line
                                     {
                                         IsHitTestVisible = false,
                                         Stroke = brush,
                                         X1 = 0,
                                         X2 = max,
                                         Y1 = 100 + (strokeWidth/2),
                                         Y2 = 100 + (strokeWidth/2),
                                         StrokeThickness = strokeWidth,
                                     };
            _grid.Children.Add(horizontalLine);
            _shapes.Add(horizontalLine);
            var horizontalLine2 = new Line
                                      {
                                          IsHitTestVisible = false,
                                          Stroke = brush,
                                          X1 = 0,
                                          X2 = max,
                                          Y1 = 140 + (strokeWidth/2),
                                          Y2 = 140 + (strokeWidth/2),
                                          StrokeThickness = strokeWidth,
                                      };
            _grid.Children.Add(horizontalLine2);
            _shapes.Add(horizontalLine2);

            var verticalLine = new Line
                                   {
                                       IsHitTestVisible = false,
                                       Stroke = brush,
                                       X1 = 120 - (strokeWidth/2),
                                       X2 = 120 - (strokeWidth/2),
                                       Y1 = 0,
                                       Y2 = max,
                                       StrokeThickness = strokeWidth,
                                   };
            _grid.Children.Add(verticalLine);
            _shapes.Add(verticalLine);

            var horizontalBottomLine = new Line
            {
                IsHitTestVisible = false,
                Stroke = brush,
                X1 = 0,
                X2 = max,
                Y1 = height - 130 + (strokeWidth / 2),
                Y2 = height - 130 + (strokeWidth / 2),
                StrokeThickness = strokeWidth,
            };
            _grid.Children.Add(horizontalBottomLine);
            _shapes.Add(horizontalBottomLine);
            var horizontalBottomLine2 = new Line
            {
                IsHitTestVisible = false,
                Stroke = brush,
                X1 = 0,
                X2 = max,
                Y1 = height - 50 + (strokeWidth / 2),
                Y2 = height - 50 + (strokeWidth / 2),
                StrokeThickness = strokeWidth,
            };
            _grid.Children.Add(horizontalBottomLine2);
            _shapes.Add(horizontalBottomLine2);

            const int tileHeight = 20;

            for (int x = 120; x < /*width*/ max; x += (tileHeight*2))
            {
                for (int y = 140; y < /*height*/ max; y += (tileHeight*2))
                {
                    var rect = new Rectangle
                                   {
                                       Width = tileHeight,
                                       Height = tileHeight,
                                       VerticalAlignment = VerticalAlignment.Top,
                                       HorizontalAlignment = HorizontalAlignment.Left,
                                       Margin = new Thickness(x, y, 0, 0),
                                       IsHitTestVisible = false,
                                       Fill = brush,
                                   };
                    _grid.Children.Add(rect);
                    _shapes.Add(rect);
                }
            }

            _grid.Visibility = _visible ? Visibility.Visible : Visibility.Collapsed;
            _grid.Opacity = _opacity;

            // For performance reasons a single surface should ideally be used
            // for the grid.
            _grid.CacheMode = new BitmapCache();

            // Places the grid into the visual tree. It is never removed once
            // being added.
            parent.Children.Add(_grid);
        }
    }
}
  • Gravatar Caio Proiete July 28th, 2012 at 20:15
    Hi Mark,
    Nice work, thanks for sharing!

    It would be great if you could put this on GitHub so people can contribute. For instance, I could help you porting this to work with HTML5+JS Metro apps.

    Cheers,
    Caio Proiete
  • Gravatar Christoph April 28th, 2014 at 10:52
    Hi Mark,

    thanks for the great helper. Are there any plans to port it to work with Windows Phone 8.1 native? So far it has several problems in that environment.
  • Gravatar replica hermes bracelet china May 13th, 2014 at 05:59
    hermes scarf wallpaper MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    replica hermes bracelet china http://www.mecats.net/hermes.html
  • Gravatar cheap hermes perfume uk May 14th, 2014 at 19:17
    hermes purse scarves MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap hermes perfume uk http://lairgcaravanpark.co.uk/images/wholesale-hermes-replica-handbags--9129.html
  • Gravatar hermes replica kelly bags May 14th, 2014 at 20:41
    hermes replica purse MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes replica kelly bags http://kuruhina.com/css/fake-hermes-twilly--6069.html
  • Gravatar replica hermes jewellry May 14th, 2014 at 22:51
    replica hermes birkin hac MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    replica hermes jewellry http://skinzer.com/images/replica-hermes-jewellry--542.html
  • Gravatar hermes birkin bag mieten May 15th, 2014 at 00:25
    hermes birkin bag authenticity MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes birkin bag mieten http://ampliapharmatek.com/js/hermes-birkin-bag-mieten--171.html
  • Gravatar hermes kelly danse bag May 15th, 2014 at 02:34
    hermes leather belt replica MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes kelly danse bag http://artsmarcials.com/css/replica-hermes-ipad-2-case--9396.html
  • Gravatar fake hermes tote May 15th, 2014 at 04:30
    hermes belt price range MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    fake hermes tote http://piggybacknet.com/Images/hermes-collier-de-chien-cuff-bracelet-fake--391.html
  • Gravatar aaa replica hermes bag May 15th, 2014 at 06:30
    hermes handbags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    aaa replica hermes bag http://anilltd.com/images/fake-birkin-bag-buy--5926.html
  • Gravatar fake hermes bracelet uk May 15th, 2014 at 08:46
    hermes birkin togo leather MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    fake hermes bracelet uk http://photojenicinc.com/images/replica-hermes-dogon-wallet--8273.html
  • Gravatar cheap hermes mens wallet May 15th, 2014 at 10:39
    pictures of hermes bags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap hermes mens wallet http://ccmuse.com/Scripts/fake-hermes-perfume--6298.html
  • hermes bags sale usa MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    difference between hermes birkin and replica http://musicalinflatables.com/images/hermes-outlet-coupon--3084.html
  • Gravatar hermes birkin bag mieten May 15th, 2014 at 19:06
    hermes inspired wallets MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes birkin bag mieten http://ampliapharmatek.com/js/hermes-birkin-bag-mieten--171.html
  • Gravatar cheap hermes replica handbags May 15th, 2014 at 22:45
    hermes bag gallery MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap hermes replica handbags http://timbercovepool.com/images/cheap-hermes-replica-handbags--6454.html
  • Gravatar hermes bag replica australia May 16th, 2014 at 02:05
    hermes belt with h MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes bag replica australia http://santinoplastica.com.mx/images/hermes-europe-discount-code--9033.html
  • Gravatar cheap hermes hats May 16th, 2014 at 05:37
    hermes handbag snl MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap hermes hats http://a2ahost.co.uk/images/cheap-hermes-hats--4658.html
  • Gravatar buy hermes birkin bag replica May 16th, 2014 at 09:34
    replica hermes birkin 45 MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    buy hermes birkin bag replica http://williamcooperltd.co.uk/Images/replica-hermes-scarves-uk--9004.html
  • Gravatar cheap knock off hermes bags May 16th, 2014 at 13:24
    fake red hermes MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap knock off hermes bags http://davidandzarah.com/images/replicas-hermes-cinturones--464.html
  • Gravatar hermes lindy bag replica May 16th, 2014 at 17:23
    the best replica birkin bags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes lindy bag replica http://nacnewcomers.org/images/hermes-enamel-h-bracelet-replica--9927.html
  • Gravatar cheap replica designer handbags uk May 16th, 2014 at 21:26
    hermes scarf price increase MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    cheap replica designer handbags uk http://tonybengerlandscaping.co.uk/images/cheap-replica-designer-handbags-uk--2506.html
  • Gravatar replicas de malas hermes May 17th, 2014 at 01:32
    hermes outlet cheap MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    replicas de malas hermes http://sachavimatrimonials.com/images/fake-hermes-scarves-china--4655.html
  • Gravatar hermes outlet store france May 17th, 2014 at 06:01
    hermes kelly danse bag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
    hermes outlet store france http://lpgendermospa-doha.com/js/hermes-birkin-fake-and-original--9093.html
  • Gravatar hermes outlet toronto May 17th, 2014 at 09:54
    hermes bags kelly price MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar buy replica hermes bags May 17th, 2014 at 15:43
    best replica hermes birkin bags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes handbags for sale May 17th, 2014 at 20:07
    birkin bag vert anis MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes handbag usa May 18th, 2014 at 10:43
    replica hermes earrings MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes alligator wallet May 18th, 2014 at 11:38
    authentic vs replica hermes belt MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes bags prices in dubai May 19th, 2014 at 02:07
    kelly nash bags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes aaa May 19th, 2014 at 02:19
    cheap designer handbags uk MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar fake hermes websites May 19th, 2014 at 16:37
    hermes replica handbags online MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes belt saks May 19th, 2014 at 18:46
    hermes birkin bag preisvergleich MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarves how are they made May 19th, 2014 at 18:53
    hermes scarf box dimensions MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar replica hermes picotin bag May 20th, 2014 at 03:07
    birkin bag for sale MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes replica agenda May 20th, 2014 at 05:25
    hermes beach bag replica MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar birkin bag kelly May 20th, 2014 at 06:07
    hermes birkin replica nyc MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin bag pink May 20th, 2014 at 07:21
    hermes outlet in dubai MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar kelly travel bag May 20th, 2014 at 07:35
    aaa replica hermes bag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf on ebay May 21st, 2014 at 20:37
    hermes bags italy MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf imitation May 21st, 2014 at 21:08
    hermes outlet canada MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin colors May 22nd, 2014 at 09:20
    kelly bags vintage MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar knock off hermes bags May 22nd, 2014 at 10:28
    hermes lindy MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin bag price 2012 May 22nd, 2014 at 14:23
    knock off hermes clutch MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar discount hermes purses May 22nd, 2014 at 20:08
    hermes outlet original MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf label May 22nd, 2014 at 21:00
    hermes yeoh bag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf gift May 23rd, 2014 at 01:20
    hermes handbag list MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin grey May 23rd, 2014 at 03:37
    hermes outlet uk online MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar good fake birkin bag May 23rd, 2014 at 06:16
    hermes belt with buckle MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes aaa May 23rd, 2014 at 06:56
    hermes sunglasses 2013 MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf qu importe le flacon May 23rd, 2014 at 12:14
    knock off womens hermes belt MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarves for less May 23rd, 2014 at 12:39
    birkin bag xl MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin o stamp May 23rd, 2014 at 16:41
    designer handbags for sale uk MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar birkin bag colors 2012 May 23rd, 2014 at 18:59
    hermes belt london MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes fake lawsuit May 23rd, 2014 at 19:55
    replica hermes silk scarf MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar kelly bag trademark May 24th, 2014 at 06:01
    authentic hermes kelly zipper MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar replica hermes scarf May 24th, 2014 at 06:14
    kelly bag prada MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes kelly in paris May 24th, 2014 at 08:39
    hermes birkin alligator MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes dogon purse replica May 24th, 2014 at 08:49
    hermes kelly vinyl bag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes kelly wallet replica May 24th, 2014 at 11:52
    hermes bags new arrivals MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes replica aaa handbag May 24th, 2014 at 12:13
    best replica hermes handbag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarf archive May 24th, 2014 at 23:50
    hermes birkin how much MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes scarves consignment May 25th, 2014 at 00:08
    good hermes replica handbags MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes belt look alike May 25th, 2014 at 02:13
    hermes replica medor clutch MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar buy hermes birkin bag replica May 25th, 2014 at 02:25
    best hermes birkin bag MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar fake hermes bag on ebay May 25th, 2014 at 05:18
    hermes kelly depeche MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes belt buckle fake May 25th, 2014 at 05:44
    knock off hermes cuff MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes outlet bags uk May 25th, 2014 at 17:03
    birkin bag forbes MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes kelly fjord May 25th, 2014 at 19:32
    hermes handbags neiman marcus MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes birkin year code May 25th, 2014 at 19:34
    hermes birkin small size price MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes lego purse May 25th, 2014 at 19:48
    hermes at discount MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes replica h bracelet May 25th, 2014 at 21:53
    hermes belt from china MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar hermes kelly bag yellow May 25th, 2014 at 23:15
    hermes clutch MetroGridHelper for WinRT, a helper to get the alignment right - Silverlight, WP7, .NET, C#, ASP.NET MVC
  • Gravatar Kennethea July 9th, 2014 at 04:04
    Autel MaxiSys Pro?? http://maxisys908.com ,Automotive Diagnostic & Analysis System with Prestigious Quality, Perfect Diagnostic Tool for Shops and Technicians
  • Gravatar Corrine August 16th, 2014 at 01:21
    fantastic issues altogether, you just won a new reader. What could you suggest in regards to your submit that you just made a few days in the past?

    Any sure?
  • I'm not sure exactly why but this web site is loading incredibly slow for me.
    Is anyone else having this issue or is it a issue on my end?
    I'll check back later and see if the problem still exists.
  • Gravatar 300 Pound Weight Set August 20th, 2014 at 04:55
    Exceptional post but I was wanting to know if you could write a litte more on this topic?
    I'd be very thankful if you could elaborate a little bit further.
    Appreciate it!
  • Gravatar corporate gifts for clients August 23rd, 2014 at 05:25
    Link exchange is nothing else but it is simply placing the other person's web site link on your page at suitable place and other person will also do similar in favor of
    you.
  • Gravatar corporate gifts ideas singapore August 23rd, 2014 at 05:33
    Right now it looks like Drupal is the preferred blogging
    platform out there right now. (from what I've read) Is that
    what you are using on your blog?
  • Gravatar Giftmarket August 31st, 2014 at 02:11
    You need to take part in a contest for one of the greatest sites on the internet.
    I most certainly will recommend this blog!
  • Gravatar sac longchamp taille moyenne September 21st, 2014 at 11:04
    Singer Britney Spears and her diamond necklaced Chihuahua pup arrive at the 2004 Billboard Music Awards at the MGM Grand Garden Arena, in Las Vegas on Dec. 8, 2004. These days, Spears sports her son Sean Preston on her arm.
  • Gravatar michael kors crossbody replica September 21st, 2014 at 14:43
    ), la maison estime que désormais les femmes représentent 60 % des personnes qui poussent la porte de ses boutiques (120 en France dont 2 en nom propre à Paris) contre 10 % avant 2002. Il faut dire que quand un solitaire en or et diamants est proposé à 950 euros, cela devient tout de suite moins intimidant. [.] Pour parvenir à ces prix super compétitifs, la marque a brisé un autre tabou, en faisant fabriquer certaines pièces en Asie. S'associer à des vedettes de la téléréalité, des présentatrices de JT n'est pas non plus considéré comme dévalorisant. Cela apporte de la fraîcheur à la griffe et c'est très bien, assure Alain Némarq qui pense aujourd'hui médiatisation de la marque et création d'univers. [.] Parmi les autres grands projets à venir, l'ouverture d'une boutique à New York est programmée pour juin 2008. Un retour aux tats Unis après les années noires qui avaient contraint Mauboussin à fermer son enseigne de Park Avenue. D'ici là, la boutique des Champs lysées connaîtra un réaménagement spectaculaire à l'automne. [.]
Gravatar