2017-01-17 18 views
0

ポップアップコントロールを使用して希望の結果を達成していますが、ボタンをクリックしてポップアップを作成しようとしていますが、 ポップアップが開かれ、画面サイズが変更されている間、そのポップアップは同じ場所に残り、これは醜いです。 画面サイズに合わせてポップアップの配置を変更する方法もありますか? コードスニペットさは次のとおりです。ウィンドウサイズが変更されたときのWPFポップアップ位置の調整

<Popup x:Name="AdvancedFlyout" IsOpen="{Binding FlyoutVisibility}" Placement="Left" HorizontalOffset="{Binding ActualWidth,ElementName=btnAdvanced}" VerticalOffset="{Binding ActualHeight,ElementName=btnAdvanced}"> 

答えて

0

手動で画面サイズの変更に応じて、あなたのポップアップを移動するためのコードを書くことができるようにいくつかのイベントをフックする必要があります。必要に応じて、SystemParameters.WorkArea.PrimaryScreenWidthに直接バインドすることができます。ポップアップを開くと、位置が計算され、バインディングを設定してもポップアップが配置されます。

 YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth/2 - YourPopup.Width/2; 
     YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight/2 - YourPopup.Height/2; 

これは、中央に配置されます:

"{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}" 

フックアップは、画面サイズに配線する弱々しい場合はイベント

yourWindow.SizeChanged += (o, args) => 
          { 
           YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth/2 - YourPopup.Width/2; 
           YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight/2 - YourPopup.Height/2; 
          }; 

はちょうどこのようないくつかのコードを記述ハンドラでイベントを変更しました画面。 幸運と私はこれが助けてくれることを願っています。 これが役立つ場合は、回答に印を付けてください。

関連する問題