1

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

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

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

我怎么能通过刷新第一个打开的页面或标签来防止这种情况发生。我想防止每次打开多个标签。

(最终我想传递一个动态 url 来导航 ex:第一次 www.stackoverflow.com/questions 第二次我想用 www.stackoverflow.com/answers 刷新同一个打开的页面)。

4

3 回答 3

1

在欧洲_blank Use _self

例如:

不要使用这个

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

你就用这个

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

可能的值:

  • _blank - 目标 URL 将在新窗口中打开
  • _self - 目标 URL 将在单击它的同一帧中打开
  • _search - 目标 URL 将在搜索窗格中打开
  • _top - 目标 URL 将在整个窗口中打开
  • _parent - 目标 URL 将在父框架集中打开

根据您的评论,您可以采用另一种方法。如果你愿意,你可以使用它。

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";
}

希望你能有所了解。,

于 2013-04-19T14:24:15.683 回答
1

你可以实现使用

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

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

于 2015-04-15T06:40:10.457 回答
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");

使事情更明确。

于 2013-04-19T14:09:14.957 回答