2011-07-05 3 views
7

나는 listview의 항목을 더블 클릭 할 때 팝업되는 팝업 창이 있습니다.
메인 윈도우를 중심에두고 정말 멋지게 보입니다.
문제는 사용자가 주 창을 이동하거나 다른 프로그램을 선택하고 팝업이 다른 것들 위에 떠있을 때입니다.WPF 팝업 대체물

저는 팝업과 같은 것을 가지고 싶습니다. 즉, 윈도우의 다른 요소 위에 떠 다니는 것이지만, 움직일 때 (메인 위치에있을 때) 메인 윈도우에 달라 붙고 다른 것들 위에 떠오르지 않는다는 것을 의미합니다 프로그램.
이렇게 팝업을 만들 수 있나요, 아니면 더 좋은 방법이 있습니까?

+0

VB.Net 2010에 있는데 Popup에 .Owner 속성이 없다고 생각하고 Window.GetWindow (Me) .Owner = Application.Current.MainWindow를 설정하려고하면 ' 소유자 속성을 자체로 설정할 수 없습니다. '이렇게 올바르게 수행하는 방법을 모르겠습니다. – AndyD273

+1

이것은 "다른 응용 프로그램보다 wpf 팝업이 뜨다"는 Google의 인기 히트입니다. 다른 이유로 팝업을 사용하려면 http://stackoverflow.com/questions/16316139/popup-doesnt-lose-focus-and-close-untilive-clicked-a에 대한 링크를 삭제하고 싶습니다. -control-within-it – Morten

+0

끝내주게 감사합니다, – AndyD273

답변

3

Adorner은이 경우 사용자의 요구 사항에 맞을 수도 있습니다. 창고는 창문 위에 떠있을 수 있습니다. 주로 adorner가 UIElement (윈도우 포함)에 바인딩된다는 점에서 몇 가지 차이점이 있습니다.

+0

사실 후에 Adorner를 요소에 적용 할 수 있는지 알고 있습니까? 이 프로그램을 꽤 모듈화하기 위해 노력하고 있는데, 팝업을 팝업하는 listview는 윈도우의 탐색 프레임 안에있는 Page에 내장 된 사용자 정의 사용자 정의 컨트롤의 일부입니다. Adorner 코드를 사용자 정의 컨트롤에 넣고 창에 연결하도록 지시하면됩니다. 나는 그것을 사용자 정의 컨트롤에 첨부 할 수 있지만 창 중앙에 배치하고 싶습니다. – AndyD273

+0

예, 팝업과 같이 즉시 추가 및 제거 할 수 있습니다.예를 들어, 내 자신의 DataGrid를 작성하고 셀의 편집 창으로 Adorner를 사용합니다. Window에 AdornerLayer가 있는지 확인하십시오 (Xaml에 추가하는 것이 좋습니다). 그러면 adorner를 쉽게 중심에 배치 할 수 있습니다. –

+0

절차를 설명하는 훌륭한 자료가 있습니까? 분명히 "AdornerLayer"는 사용하기 가장 좋은 방법에 대한 많은 좋은 예가없는 꽤 모호합니다. 대부분의 예제는 "텍스트 상자의 모서리에 점을 넣으십시오"이며 각 텍스트를위한 클래스를 작성하는 것을 포함합니다. 이 작업이 끝나면 대부분 사용자 지정 사용자 정의 컨트롤이 포함 된 12 개의 "팝업"스타일 컨트롤을 사용할 수 있습니다. 도움이 필요하면 각 클래스에 대한 특정 클래스를 작성하지 않아도됩니다. 팝업은 사용하기가 쉽기 때문에 XAML에서 디자인하고 필요에 따라 표시 할 수 있습니다. 이런 종류의 쉬운 창조를 가진 adorner 통제는 위대 할 것입니다. – AndyD273

0

나는 팝업이 대안으로

WPF

에, 당신은 팝업과 같은 역할을하는 UserControl을을 만들 수 있다는 것을 그만 만들 수있는 방법을 발견하지 않았습니다.

보통 캔버스 컨트롤 내에서 팝업과 함께 앱의 콘텐츠 섹션을 호스팅하고 IsPopupOpen이 True로 변경되면 Visibility = Visible 팝업을 설정합니다.

+0

이것은 갈 수있는 방법 일지 모르지만, 나는 그것을하는 가장 좋은 방법은 아직 확실하지 않습니다. ListView는 네비게이션 프레임 내부의 페이지 내부 CustomUserControl에 있습니다 (주 윈도우가 아닌 경우). – AndyD273

+0

캔버스를 페이지에 추가 할 수 있지만, 잘 모르겠 UserControl에서 열려면 명령을 거품 최대 – AndyD273

+0

@ AndyD273 (이 경우, 창) 귀하의 최고의 컨트롤에 팝업을 추가하고'IsPopupOpen'의 ViewModel에 속성이 있습니다. 그런 다음 EventListener를 설정하여'ShowPopupEvent's를 수신하고 해당 이벤트가 발생할 때 팝업을 표시합니다. ShowPopupEvent 매개 변수의 일부로 팝업 컨텐츠를 전달할 수도 있습니다. – Rachel

3

창이 크기가 조정되거나 이동되는 동안 팝업이 이동하지 않습니다. 왜냐하면 Popups/Context 메뉴는 Visual Tree의 일부가 아니기 때문입니다. 이 경우 Adorner을 사용해야합니다. Adorner의 빠른 시작을 위해 this 네 부분으로 구성된 시리즈를 읽어 보도록 권합니다.

+0

Adorner가 사실 후에 요소에 적용될 수 있는지 알고 있습니까? 이 프로그램을 꽤 모듈화하기 위해 노력하고 있는데, 팝업을 팝업하는 listview는 윈도우의 탐색 프레임 안에있는 Page에 내장 된 사용자 정의 사용자 정의 컨트롤의 일부입니다. Adorner 코드를 사용자 정의 컨트롤에 넣고 창에 연결하도록 지시하면됩니다. 나는 그것을 사용자 정의 컨트롤에 첨부 할 수 있지만 창 중앙에 배치하고 싶습니다. – AndyD273