Popup
을 사용하는 경우 팝업이 원래 나타난 후에 PlacementTarget
이나 CustomPopupPlacementCallback
이 사용되지 않습니다. 따라서 이러한 속성을 사용하면 팝업이 이동하는 동안 버튼을 추적 할 수 없습니다.
여러 가지 방법으로 당신이 원하는 것을 성취 나에게 발생합니다
- 버튼에 사용자 정의
Adorner
를 부착하고 그 안에 팝업을 넣어. 단점 : 팝업은 Button 또는 주변 요소에 연결되어 있지 않으므로 속성 & DataContext를 상속하지 않습니다.
버튼에 맞춤 Adorner
을 첨부합니다. 이 adorner는 AdornerLayer
을 기준으로 버튼이 움직일 때 측정 및 전화 정렬을 수행하므로 Popup
위치를 수동으로 업데이트 할 수 있습니다. AdornerDecorator
이 Window
과 관련하여 이동하지 않는 한 (예 : Window의 직계 하위 항목 인 경우) AdornerLayer
이 이동되는 것을 Windows 크기의 변경 사항을 모니터링하여 쉽게 감지 할 수 있습니다. 단점 : 복잡한 코드 &이 좋습니다.
Popup
을 전혀 사용하지 마십시오. 대신 너비가 0이고 원하는 위치가 0 인 <Grid>
의 버튼을 <Canvas>
과 함께 포장하십시오. <Canvas>
안에 적절한 ZIndex가있는 팝업에 UserControl
을 추가하십시오. 그것은 캔버스의 가장자리를 넘어 확장됩니다. 이것은 WPF에서만 유효합니다. Popup
컨트롤을 사용하는 대신 UserControl
의 가시성을 제어하면됩니다. 단점 : 실제로 다른 모든 객체 위에 완전히 올려지지는 않을 것이며, 윈도우 가장자리에서 벗어날 수는 없습니다 (XBAP에서는 문제가되지 않을 수도 있음).