이전에 (Get Absolute Position of element within the window in wpf)이 질문을 받았지만 아직 제대로 구현할 수 없었습니다. 부모 창에있는 컨트롤을 기준으로 자식 창이 열리려고합니다. 지금까지 나는 이것을 가지고있다. 이 자식 창 (messageWindow
)의 위치에 영향을는하지만자식 창 위치 지정
messageWindow = new Message(true);
Point relativePoint = btn1.TransformToAncestor(this).Transform(new Point(0, 0));
messageWindow.Left = relativePoint.X;
messageWindow.Top = relativePoint.Y;
messageWindow.Show();
지금, 부모의 btn1
제어 옆에/그것을 배치하지 않는 것 같습니다. 내가 가지고있는 또 다른 문제는 부모 창을 옮기면 원본을 닫은이 메서드를 호출한다는 것입니다. messageWindow
새 위치의 창은 이전 위치에 표시됩니다 (btn1
이 새 위치 임에도 불구하고). 나는이 이상한 것을 발견하고 누군가가 내가 이것을 고칠 수 있는지 궁금해하고 있었다. 나는뿐만 아니라 전체 화면, 윈도우에서 제어 위치로 상대 설정하는 것을 설명하기위한 Charleh에
UPDATE
감사합니다. 이제 부모 창 위치를 화면에 표시하고 XY에 추가하는 문제입니다. 내가 어떻게 얻을 수 있니? 그냥이 코드를 시도 (비록 내가 솔직하게, 나는 그것을 이해하지 못한다) 버스는 여전히 매우 밀접하게 따르지 않는 것. 화면에서 Window 위치를 얻는 좋은 방법은 무엇입니까?;
messageWindow= new Message(true);
Point relativePoint = btn1.TransformToAncestor(this).Transform(new Point(0, 0));
PresentationSource ScreenPos = PresentationSource.FromVisual(this);
messageWindow.Left = relativePoint.X + (96.0 * ScreenPos.CompositionTarget.TransformToDevice.M11);
messageWindow.Top = relativePoint.Y + (96.0 * ScreenPos.CompositionTarget.TransformToDevice.M22);
messageWindow.Show();
부모 창의 좌표를 고려하고 있습니까? 이것은 상대 위치를 제공합니다 - 절대 위치가 아닌 부모 창과 동일한 위치에 자식 창을 놓은 다음 relativePoint – Charleh
@Charleh Oh ya를 사용하여 변환해야하는 것처럼 들립니다. 그것은 그것이 부모와 함께 움직이지 않은 이유를 이해합니다. 감사! – windowskm