htmlpage.window.navigate会在每次点击时打开新页面或新标签页

时间:2013-04-19 14:04:02

标签: c# .net silverlight

在我的Silverlight应用程序中,我点击一下按钮,每次点击它都会调用此代码

 private void Help_Click(object sender, RoutedEventArgs e)
  {
    HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");
  }

但我的问题是每次点击它都会在浏览器中打开一个新标签或窗口。

如何通过刷新第一个打开的页面或带有该URL的选项卡来防止这种情况发生。 我想每次都防止打开多个标签。

(最终我想通过动态网址进行导航 例如:第一次www.stackoverflow.com/questions     第二次我想用www.stackoverflow.com/answers刷新同一个打开的页面。

3 个答案:

答案 0 :(得分:1)

Insead of _blank Use _self

例如:

不要使用此

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");

你只需使用这个

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");

可能的值:

  • _blank - 目标网址将在新窗口中打开
  • _self - 目标网址将在点击的同一框架中打开
  • _search - 目标网址将在搜索窗格中打开
  • _top - 目标网址将在窗口的正文中打开
  • _parent - 目标网址将在父框架集
  • 中打开

根据您的评论,您可以选择另一种方式。如果您希望可以使用它。

private void Help_Click(object sender, RoutedEventArgs e)
{
        // Checking the Condition
        if (Session["hasvalue"].ToString() == "Clicked") // Second click onwards current TAB itself
        {
            HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");
        }
        else // First Time it will be opened in New TAB
        {
            HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");
        }

        // Assign this value to session
        Session["hasvalue"] = "Clicked";
}

希望你能有所了解。

答案 1 :(得分:1)

你可以使用

HtmlPage.Window.Navigate(new Uri(“https://stackoverflow.com/”),“xyz”);

其中xyz是一个随机字。它可以替换为任何单词

答案 2 :(得分:0)

如果您不希望它打开新标签页,请从"_blank"构造函数中删除Uri。所以改变

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"));

有关详细信息,请参阅W3Schools目标说明。

"_self"是默认设置,但您可以使用

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");

使事情更明确。