Как разрешить связь между моим приложением WPF и размещенным IExplorer? - PullRequest
1 голос
/ 21 января 2010

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

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

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

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

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

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

Любой совет или возможное решение приветствуется.

1 Ответ

1 голос
/ 21 января 2010

Если вы используете элемент управления 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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...