2009-10-06 9 views
3

내 WPF 응용 프로그램의 WebBrowser 컨트롤에서 "오버레이 컨트롤"을 표시하는 방법에 대한 힌트를 누군가에게 줄 수 있습니까? 오버레이로 탐색 그래픽을 표시하여 사용자가 함수를 선택할 수 있도록하고 탐색 컨트롤을 선택하면 사라집니다.오버레이?

지금은 WPF에서 실제로 경험하지 않았습니다. :(어디서부터 시작해야할지 모르겠다. 어떤 힌트 나 링크가 좋을 것이다.) 감사합니다.

답변

4

WPF 브라우저 컨트롤에 "공역"문제가 있습니다. 기본적으로 브라우저 컨트롤의 맨 위에 물건을 올려 수 없습니다.

work around 것은 팝업 컨트롤로 중첩 컨트롤을 배치하는 것입니다.

+0

들으 많은. 매우 유망 해 보인다. "공역"문제에 대해 들어 본 적이 없습니다. 그러나 쉽게 풀 수 있다는 것을 알면 좋습니다. 얼마나 빨리 당신이 내 질문에 대답했는지 놀랍습니다. 인상적. :) – pantarhei

+1

Karl 작품에서 게시 된 "해결 방법"을 만들 수없는 이유는 무엇입니까? 불행히도, 나는 원래 블로거 칼에게 물을 수 없다. 소스 코드 다운로드 링크가 끊어졌지만 정확한 XAML을 얻었습니다 (버튼에 대한 명령을 제거한 것 제외). 아무도 작업 복사본을 게시 할 수 있습니까? 그 정보에 대한 – newman

0

가 크롬을 사용하는 wpf based browser있다. 그것은 당신처럼 취급 할 수 있도록해야한다 다음 오히려 다른 WPF 개체 액티브 X 브라우저 컨트롤.

+0

xx. 나는 그것도 한번 볼게. 하지만 지금은 위의 작업이 충분히 멋지게 보입니다. – pantarhei

0

나는 방법이 과거의 일을 발견 비록 약간의 해킹이긴하지만. 기본적으로 WinForm 컨트롤로 컨트롤을 만들고 WindowsFormsHost를 사용하여 컨트롤을 호스팅합니다.

WindowsFormsHost는 웹 브라우저 컨트롤 위에 위치합니다.

나는, 좋지 않은 말했지만 당신이 필사적 인 경우 작동한다.

0

WPF 웹 브라우저 컨트롤의 공기 공간을 통해 얻을 힘든, 애니메이션을 표시 할 때, 당신은 웹 브라우저 컨트롤의 높이를 최소화 할 수 있으며, 귀하의 작업이 끝나면 다시 높이를 설정합니다.

이 문제에 대한 더 나은 해결 방법은 브라우저 컨트롤의 높이를 처리하는 것입니다. 아래의 간단한 시나리오를 찾으십시오.

메인 윈도우에 웹 브라우저 컨트롤이 있다고 가정합니다. 당신이 어떤 행동을 할 때, 예를 들면 : MainWindow 위에 오는 다른 사용자 컨트롤을 가지고있는 버튼을 클릭하십시오. 그러나 Airspace 문제로 인해 웹 브라우저가 상위 컨트롤에 있지 않고 컨트롤 상단에 위치합니다.

FIX : 표준 수정은 시나리오에 따라 달라집니다 동안 당신이 다른 제어를 실행할 때 제로로 웹 브라우저의 높이를 설정할 수 있습니다. 아래에는 샘플 구현이 있습니다.

MainWindow.Xaml에는 이벤트가 포함됩니다.

Activated="Window_Activated" 
Deactivated="Window_Deactivated" 

Xaml.cs에서 높이를 설정하여 시나리오를 처리합니다.

private void Window_Activated(object sender, EventArgs e) 
{ 
    wb.Height = double.NaN; 
} 

private void Window_Deactivated(object sender, EventArgs e) 
{ 
    wb.Height = 0; 
}