/// <summary>
        /// Triggers the transition between visual states.
        /// </summary>
        /// <param name="obj">The dependency object.</param>
        /// <param name="e">The event information.</param>
        private static void OnSizeChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            FlipTile flipTile = (FlipTile)obj;

            // And now we'll update the width and height to match the new size.
            switch (flipTile.Size)
            {
            case TileSize.Default:
                flipTile.Width  = 160;
                flipTile.Height = 160;
                break;

            case TileSize.Small:
                flipTile.Width  = 99;
                flipTile.Height = 99;
                break;

            case TileSize.Medium:
                flipTile.Width  = 210;
                flipTile.Height = 210;
                break;

            case TileSize.Large:
                flipTile.Width  = 432;
                flipTile.Height = 210;
                break;
            }

            flipTile.SizeChanged += OnFlipTileSizeChanged;
            FlipTileService.FinalizeReference(flipTile);
        }
 /// <summary>
 /// This event handler gets called as soon as a flip tile is removed from the visual tree.
 /// Any existing reference of this flip tile is eliminated from the service singleton.
 /// </summary>
 /// <param name="sender">The flip tile.</param>
 /// <param name="e">The event information.</param>
 void FlipTile_Unloaded(object sender, RoutedEventArgs e)
 {
     FlipTileService.FinalizeReference(this);
 }