メインウィンドウとして1つのウィンドウを使用する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>
メインウィンドウ要素名は私のメインウィンドウの一つであります
<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
" MainWindow "型がWPFで認識されないため動作しませんでした。しかし、 "ウィンドウ"では、それは動作します:PlacementTarget = "{バインディングRelativeSource = {RelativeSource AncestorType =ウィンドウ}}"。ありがとう! – Cleo