2009-05-15 6 views
3

클릭하면 팝업이 열리는 단추가 있습니다. Popup은 더 많은 버튼을 포함하는 서브 메뉴입니다. 하위 메뉴의 버튼 중 하나를 클릭하면 팝업이 닫힙니다. 또한 사용자가 Popup 외부를 클릭하면 Popup이 닫히기를 원합니다. 또한 화면의 대부분은 OpenGL Win Forms 컨트롤을 표시하는 WindowsFormsHost에 의해 처리됩니다.닫기 방법 WPF에서 하위 메뉴로 사용되는 팝업

하위 메뉴 버튼을 클릭하면 팝업을 닫을 수 있습니다. 해당 버튼에 대한 클릭 핸들러 내에서 팝업을 닫습니다. 그러나 팝업을 닫을 때 다른 곳을 클릭하면 문제가 발생합니다.

상황은 나는 시도했다 :

false로 PopUp.StaysOpen 설정. 이것은 화면의 다른 곳을 클릭 할 때 팝업이 닫히는 점에서 작동합니다. 그러나 Win Forms 컨트롤에서 팝업을 닫고 두 번째 클릭을 사용하여 지금까지 어떤 작업을 수행해야하는 것처럼 보입니다. 이것은 매우 바람직하지 않습니다.

팝업을 열고 StaysOpen을 true로 설정하는 단추에 대해 LostFocus 이벤트를 처리해 보았습니다. Popup을 클릭하면 Win Forms 컨트롤의 두 번째 클릭이 필요하지 않습니다. 이제 문제는 LostFocus 이벤트가 처리되고 Popup이 Popup의 모든 단추를 클릭하기 전에 닫힌 것입니다. 이렇게하면 하위 메뉴를 사용할 수 없게됩니다.

답변

1

WPF의 포커스 시스템에 문제가있을 수 있습니다. WPF는 WinForms 및 표준 Win32 창과 완전히 별개의 자체 포커스 시스템을 가지고 있습니다.

WinForms와 WPF간에 포커스를 전환 할 때 제대로 실행되지 않는 이벤트가있을 것입니다.

WinForms 창의 WndProc 또는 Click 이벤트를 무시하고 팝업에서 수동으로 IsOpen을 false로 설정하는 것이 좋습니다.

나는이 문제를 해결할 유일한 방법이라고 생각합니다.

관련 문제