2010-01-21 3 views
1

Для довольно большого проекта я должен выяснить, как (если возможно) решить эту проблему. У меня есть полноэкранное приложение WPF, выполняющее слайд-шоу - после интервала, например. 20 секунд на слайд. Теперь я должен исследовать возможность замены слайд-шоу на URL-адрес, и пользователь может перемещаться по слайдам вместо смены слайдов каждые 10 секунд. Настройка такова:Как разрешить связь между моим WPF-приложением и размещенным IExplorer?

  1. Сначала запускается приуроченное слайд-шоу, например. 5 горок
  2. Я показываю свой веб-страницу и позволяю пользователю взаимодействовать с вебом-сайтом (ходовым)
  3. Когда пользователь «Есть ли что-то (это проблема)» сайт будет удалены из «горки» и оригинала слайдшоу возобновляется

Отображаемый контейнер представляет собой пользовательский элемент управления WPF с событием, которое позволяет ему перейти на следующий слайд (вызов метода Next()). IExporer размещен внутри этого элемента управления.

Проблема, стоящая перед этим, заключается в следующем: как мне связаться с веб-сайтом, что мое хостинг-приложение должно вызвать метод NExt()?

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

WebServices, файлы на диске, вы называете это, я готов попробовать что-нибудь :-)

Любые советы или возможные решения ценится.

ответ

1

Если вы используете элемент управления WebBrowser в своем приложении WPF, вы можете позвонить в классы C#, используя javascript из вашего html. Например, предположим, что у вас есть класс, подобный следующему:

[ComVisible(true)] 
public class JavaScriptBackEnd 
{ 
    public void onclick(string s) 
    { 
     MessageBox.Show(s); 
    } 
} 

Затем инициализировать элемент управления WebBrowser с помощью следующего кода:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    webBrowser1.ObjectForScripting = new JavaScriptBackEnd(); 
    webBrowser1.Navigate(new Uri(@"HTMLPage1.htm")); 
} 

С HTMLPage1.htm теперь вы можете позвонить в JavaScriptBackEnd.onclick метод со следующим javascript:

function testclick() { 
    window.external.onclick('blabla'); 
} 
+0

Nice! только то, что мне нужно –