在Silverlight中设置HtmlPage.Window.CurrentBookmark属性时禁止导航

时间:2011-04-05 23:28:09

标签: silverlight navigation

我有一个场景,我需要更改HtmlPage.Window.CurrentBookmark属性,但我想这样做而不会导致Silverlight应用程序重新加载。现在,我正在这样做,但它导致应用程序重新启动:

public void SetBookmark(string authenticationGroupTag, string ownerUserTag, string roomName)
{
    string bookmark = GetBookmark(authenticationGroupTag, ownerUserTag, roomName);
    HtmlPage.Window.CurrentBookmark = bookmark;
    // HtmlPage.Window.Eval("window.location.hash='" + bookmark + "'");
}

这种特殊行为 - 重新启动应用程序 - 似乎没有记录在任何地方,所以我想知道我是否只是做错了。我已经尝试捕获各种与导航相关的事件(Page.OnNavigatedFrom或RootFrame.Navigating),但这些事件实际上都没有被触发:应用程序只是卸载然后重新加载。

所以我想我的问题有两个部分:(1)这是预期的行为,还是我只是做错了什么? (2)如果预期的行为,有没有人想出一个解决方法呢?有没有办法在“#”之后更新URL的部分而不重新加载Silverlight应用程序?

1 个答案:

答案 0 :(得分:0)

事实证明,这只是一个长期存在的问题的变体,即,当(a)用户在重定向后到达当前页面时,Internet Explorer刷新页面,并且(b)您更改了window.location.hash。换句话说,这是IE问题(在IE9中仍然没有修复!),而不是Silverlight问题。 Firefox和Chrome都能正常运行。 (有关详细信息和一些建议的解决方法,请参阅javascript location.hash refreshing in IEResponse.Redirect with a fragment identifier causes unexpected refresh when later using location.hash。)