2015-11-19 3 views
0

В моем проекте Silverlight я создал страницу HTM, где я включил тег iframe.Открыть страницу HTM в новом окне в проекте Silverlight

Я хочу открыть эту страницу на новой вкладке браузера. Это то, что я пытаюсь реализовать при событии нажатия кнопки:

HtmlPage.Window.Navigate(new System.Uri("../Forms/Page.htm", System.UriKind.Relative), "_blank"); 

HtmlPage.Window.Navigate(new System.Uri("../Forms/Page.htm", "_blank"); 

HtmlPage.Window.Navigate(new System.Uri("/Forms/Page.htm", "_blank"); 

HtmlPage.Window.Navigate(new System.Uri("Page.htm", "_blank"); 

До сих пор ни один из этих подходов не работал. Я продолжаю получать ошибку 404, говоря, что страница не найдена.

Есть ли способ обойти эту проблему?

С наилучшими пожеланиями

ответ

0

Ваша страница должна быть в веб проекта. Если страница находится в корне проекта, это работает (в любом месте в растворе):

HtmlPage.Window.Navigate(new System.Uri("/page.htm", UriKind.Relative), "_blank"); 

Если страница находится внутри проекта приложения Silverlight, вы не можете получить доступ к нему непосредственно HtmlPage.Window.Navigate, однако вы можете загрузить его содержание (то, например, сохранить его в локальную папку и, наконец, показывать его или использовать WebBrowser, как описано here)

 var sm = Application.GetResourceStream(new System.Uri("page.htm", UriKind.Relative)); 
     StreamReader reader = new StreamReader(sm.Stream); 
     string content = reader.ReadToEnd(); 
     browser.NavigateToString(content); 
+0

Благодарим вас за ответ. Я закончил тем, что попробовал другой подход и не имел возможности проверить ваш код. Но все равно спасибо –

0

используйте следующий код, чтобы открыть веб-страницу в серебряном свете.

HtmlPage.Window.Invoke("ShowBrowserIFrame", url); 

ShowBrowserIFrame - функция JS, добавьте эту функцию на страницу html серебряного света.

function ShowBrowserIFrame(url) { 
BrowserDivContainer.css('display', 'block'); 
$('<iframe id="' + jobPlanIFrameID + '" src="' + url + '" style="height:100%;width:100%;" />') 
.appendTo(BrowserDivIFrameContainer); 
slHost.css('width', '0%'); 
} 

Проверьте это post для полного решения.

Смежные вопросы