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