2013-03-11 4 views
-2

Dans mon application Silverlight, j'ai un composant WebBrowser qui affiche du contenu HTML aléatoire.Méthode d'appel C# à partir de javascript à partir de WebBrowser hébergé dans Silverlight

Je voudrais appeler des méthodes C# à partir de là (par exemple lorsque je clique sur un lien [un href ...]).

Modifier [ajouter des détails]:

Je vais essayer de clarifier mon problème, désolé pour la question initiale mal posée:

Dans mon fichier XAML, j'ai mon composant WebBrowser:

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

dans le code derrière, j'ai une méthode qui charge HTML dans le navigateur Web (HTML à partir d'une source externe):

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

Ce que je voudrais faire est d'ajouter par exemple un bouton à la vue html (cette partie est ok) et qu'un clic sur le bouton déclenche une fonction C#.

Edit: si je peux piéger le clic sur les liens à l'intérieur du navigateur Web et les gérer dans le code derrière, ce serait bien aussi

Je l'ai essayé dans: System.Windows.Navigation.LoadCompletedEventHandler mais peut « t faire cela fonctionne

+0

[c'est peut-être utile] (http://stackoverflow.com/questions/8800764/how-to-intercept-when-user-click-on-a-link-in-a-webbrowser), j'ai trouvé en faisant une recherche Google - quelque chose que je vous suggère d'apprendre à faire vous-même – musefan

+2

Pas sûr de SL mais à partir d'une application de formulaires, vous pouvez utiliser objectforscripting + window.external; http://msdn.microsoft.com/en-us/library/a0746166.aspx –

+0

S'il vous plaît préciser si vous souhaitez appeler la méthode de l'hôte (probable suggestion Alex K fonctionnerait) ou le code côté serveur. (J'ai également changé de titre - n'hésitez pas à revenir) –

Répondre

0

J'ai utilisé le code suivant:

WebBrowser.ScriptNotify + = new EventHandler (WebBrowser_ScriptNotify);

Et dans le javascript j'ajouté:

window.external.notify (param);

Merci @musefan!

Questions connexes