Create a gist now

Instantly share code, notes, and snippets.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GalaSoft.MvvmLight.Messaging;
using GTWin8.Messages;
using GTWin8.Ui;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace MvvmHelpers
/// <summary>
/// Copied from
/// </summary>
public class StateHelper : DependencyObject
public static readonly DependencyProperty StateProperty = DependencyProperty.RegisterAttached(
"State", typeof(String), typeof(StateHelper), new PropertyMetadata("Normal", StateChanged));
internal static void StateChanged(DependencyObject target, DependencyPropertyChangedEventArgs args)
string newState = (string)args.NewValue;
Debug.WriteLine(String.Format("Attempting change from {0} to {1} on {2} ",args.OldValue, newState, target));
if (args.NewValue != null)
bool res = VisualStateManager.GoToState((Control)target, newState, true);
Messenger.Default.Send<StateChangedMessage>(new StateChangedMessage { Control = (Control)target, NewState = newState });
Debug.WriteLine("Result: " + res);
catch (Exception ex)
System.Diagnostics.Debug.WriteLine("StateHelper: " + ex.Message);
public static void SetState(DependencyObject obj, string value)
obj.SetValue(StateProperty, value);
public static string GetState(DependencyObject obj)
return (string)obj.GetValue(StateProperty);

This comment has been minimized.

Show comment
Hide comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment