하나의 창을 주 창으로 사용하는 WPF 응용 프로그램이 있습니다. 이제 창 중앙에 다양한 팝업을 표시하려고합니다. 이 팝업 창이 창 내부에 배치되면 잘 작동합니다. 그러나 사용자 컨트롤로 팝업을 구현했습니다. 주 윈도우에 실제 팝업이 포함 된 사용자 컨트롤이 있다는 것을 의미합니다. 그래서 UI 요소 트리는 다음과 같습니다WPF 주 창에 상대적인 팝업 배치
Window --> UserControlPopup --> Popup
사용자 컨트롤 내부의 팝업은 다음과 같이 선언 :
이<UserControl x:Class="X.Custom_Controls.ErrorPopup"
...
xmlns:local="clr-namespace:X.Custom_Controls"
mc:Ignorable="d" d:DesignHeight="360" d:DesignWidth="500">
<Popup Name="errorPopup" Height="360" Width="500" Placement="Center" StaysOpen="True" PlacementTarget="{Binding ElementName=mainWindow}">
...
</Popup> </UserControl>
MainWindow를 요소 이름이 내 메인 윈도우의 하나입니다
<Window x:Class="X.MainWindow" x:Name="mainWindow" ...>
문제는 팝업이 가운데에 배치되지 않지만 왼쪽에 배치된다는 것입니다. 그래서 내 생각 엔 popup이 elementName을 올바르게 해석 할 수 없다는 것입니다 (mainWindow의 하위 요소이므로). 누구든지 XAML에서이 문제를 해결할 수있는 방법을 알고 있습니까?
업데이트 : 솔루션은 x:Reference
을 통해 메인 창을 액세서하는
PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
상대 소스를 사용해 보셨습니까? 'PlacementTarget = "{RelativeSource AncestorType = MainWindow}}" – ASh
WPF에서 형식을 인식하지 못하기 때문에 "MainWindow"가 작동하지 않았습니다. 그러나 "창"을 사용하면 작동합니다. PlacementTarget = "{Binding RelativeSource = {RelativeSource AncestorType = Window}}". 감사! – Cleo