internal DeepLinkViewModel(Action <DeepLink> navigate)
        {
            this.navigate = navigate;
            HtmlLocation location = HtmlWindow.Current.Location;
            string       hash     = location.Hash;

            localStorageKey = UriUtility.GetServerRelativeUrl(UriUtility.GetAbsolutePath(location.Href)) + "?deepLink";
            if (!string.IsNullOrEmpty(hash))
            {
                try
                {
                    lastReceived = JsonDeserializer.Deserialize <DeepLink>(hash.Substring(1)); // ignore #
                }
                catch
                {
                }
            }

            if (lastReceived == null && HtmlWindow.Current.LocalStorage != null)
            {
                hash = HtmlWindow.Current.LocalStorage[localStorageKey];
                if (!string.IsNullOrEmpty(hash))
                {
                    try
                    {
                        lastReceived = JsonDeserializer.Deserialize <DeepLink>(hash); // ignore #
                    }
                    catch
                    {
                    }
                }
            }

            HtmlWindow.Current.AdviseHash(HashChanged);
        }