2010-01-21 2 views
1

다소 큰 프로젝트의 경우이 문제를 해결하는 방법을 (가능한 경우) 파악해야합니다. 나는 슬라이드 쇼를하는 풀 스크린 WPF 애플리케이션을 가지고있다. 슬라이드 당 20 초. 이제 슬라이드 쇼를 대신 URL로 대체하고 10 초마다 슬라이드를 변경하는 대신 사용자가 슬라이드를 탐색 할 수 있는지 조사해야합니다. 설정은 다음과 같습니다.내 WPF 응용 프로그램과 호스팅 된 IExplorer 간의 통신을 해결하는 방법은 무엇입니까?

  1. 먼저 시간 지정 슬라이드 쇼가 실행됩니다. 5 개 슬라이드는
  2. 내 웹 페이지를 표시하고 사용자가 사용자 이 때 "무언가를 (이 문제가)"
  3. (탐색) 웹 사이트와 상호 작용할 수 있습니다 웹 사이트는 "슬라이드"원본에서 제거 슬라이드 쇼가 다시 시작됩니다.

표시되는 컨테이너는 다음 슬라이드로 변경할 수있는 이벤트가 포함 된 WPF UserControl입니다 (Next() 메서드 호출). IExporer는이 컨트롤 내에서 호스팅됩니다.

문제점은 다음과 같습니다. 호스팅 응용 프로그램에서 NExt() 메소드를 호출해야하는 웹 사이트와 어떻게 통신합니까?

웹 사이트를 보여주는 IExplorer는 WPF UserControl 내에서 호스팅됩니다. 특정 페이지 또는 특정 링크가 눌려 졌는지 확인하는 데 도움이되는 이벤트 또는 다른 어떤 종류의 항목에 액세스 할 수있는 방법이 있습니까 ??

웹 서비스는 디스크에있는 파일, 당신은,

어떤 조언이나 해결 방안 :-) 아무것도 감사를 시도 할 준비가 메신저 이름을 지정합니다.

답변

1

WPF 응용 프로그램에서 WebBrowser 컨트롤을 사용하는 경우 HTML의 javascript를 사용하여 C# 클래스를 호출 할 수 있습니다.

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

그런 다음 다음 코드를 사용하여 웹 브라우저 컨트롤을 초기화 : 당신은 지금 호출 할 수 있습니다 HTMLPage1.htm에서

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

JavaScriptBackEnd.onclick 예를 들어, 다음과 같은 클래스가 있다고 가정 해 봅시다 다음 자바 스크립트를 사용하는 메소드 :

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

Nice! 내가 필요한 것. –

관련 문제