2013-03-11 3 views
-2

В моем приложении Silverlight у меня есть компонент WebBrowser, отображающий случайный HTML-контент.Вызов метода C# из javascript из WebBrowser, размещенного в Silverlight

Оттуда я хотел бы вызвать методы C# (например, когда я нажимаю ссылку [a href ...]).

Редактировать [добавить детали]:

Я попытаюсь разъяснить мою проблему, извините за первоначальный вопрос плохо спросил:

В моем файле XAML, у меня есть WebBrowser компонент:

<WebBrowser x:Name="HtmlMail" Grid.Row="1" Visibility="{Binding Visibility}" /> 

в коде позади, у меня есть метод, который загрузки HTML в веб-браузера (HTML от внешнего источника):

void _viewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) 
{ 
string encoded = SilverMUT.Common.Tools.CString.ToHtml(_viewModel.MailSelected.Message); 
HtmlMail.NavigateToString(encoded); 
} 

Что я хотел бы сделать, это добавить, например, кнопку в html-представление (эта часть в порядке), и щелчок на кнопке вызывает функцию C#.

Edit: если я могу ловушку щелчка по ссылкам внутри WebBrowser и обрабатывать их в коде позади, это было бы слишком хорошо

Я стараюсь в: System.Windows.Navigation.LoadCompletedEventHandler но могу «т сделать это работает

+0

[возможно, это полезно] (http://stackoverflow.com/questions/8800764/how-to-intercept-when-user-click-on-a-link-in-a-webbrowser), я нашел это, выполнив поиск в Google - что-то я предлагаю вам научиться делать самостоятельно – musefan

+2

Не уверен насчет SL, но из приложения форм вы можете использовать objectforscripting + window.external; http://msdn.microsoft.com/en-us/library/a0746166.aspx –

+0

Просьба уточнить, хотите ли вы вызвать метод хоста (вероятно, предложение Alex K будет работать) или код на стороне сервера. (Также я изменил название - не стесняйтесь возвращаться) –

ответ

0

Я использовал следующий код:

WebBrowser.ScriptNotify + = новый EventHandler (WebBrowser_ScriptNotify);

А в JavaScript я добавил:

window.external.notify (пары);

Thanks @musefan!