ポップアップの配置動作Popup Placement Behavior

コントロールPopupは、アプリケーションにフローティングする別のウィンドウにコンテンツを表示します。A Popup control displays content in a separate window that floats over an application. PlacementTargetPopup 、、、およびの各プロパティを使用して、コントロール、マウス、または画面に対して相対的なの位置を指定できます。Placement VerticalOffset PlacementRectangle HorizontalOffsetYou can specify the position of a Popup relative to a control, the mouse, or the screen by using the PlacementTarget, Placement, PlacementRectangle, HorizontalOffset, and VerticalOffset properties. これらのプロパティは、 Popupの位置を柔軟に指定できるように連携して機能します。These properties work together to give you flexibility in specifying the position of the Popup.

注意

またToolTipContextMenuクラスとクラスは、これらの5つのプロパティを定義し、同様に動作します。The ToolTip and ContextMenu classes also define these five properties and behave similarly.

ポップアップの配置Positioning the Popup

Popup配置は、 UIElementまたは画面全体に対して相対的に行うことができます。The placement of a Popup can be relative to a UIElement or to the entire screen. 次の例ではPopupUIElement(この場合はイメージ) に対して相対的な4つのコントロールを作成します。The following example creates four Popup controls that are relative to a UIElement—in this case, an image. すべてのPopupコントロールには、 PlacementTargetプロパティがにimage1設定されPopupていますが、それぞれの配置プロパティの値が異なります。All of the Popup controls have the PlacementTarget property set to image1, but each Popup has a different value for the placement property.

<Canvas Width="200" Height="150">
  <Image Name="image1"
         Canvas.Left="75" 
         Source="Water_lilies.jpg" Height="200" Width="200"/>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Bottom">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Bottom</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Top">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Top</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Left">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Left</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Right">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Right</TextBlock>

  </Popup>
</Canvas>

次の図は、イメージとPopupコントロールを示しています。The following illustration shows the image and the Popup controls

4 つのポップアップコントロールを含むイメージImage with four popup controls

この簡単な例では、プロパティPlacementTargetPlacementプロパティを設定する方法をPlacementRectangle示していVerticalOffsetますが、 HorizontalOffset、、 Popupおよびの各プロパティを使用すると、が配置されている場所をより細かく制御できます。This simple example demonstrates how to set the PlacementTarget and Placement properties, but by using the PlacementRectangle, HorizontalOffset, and VerticalOffset properties, you have even more control over where the Popup is positioned.

用語の定義:ポップアップの構造Definitions of Terms: The Anatomy of a Popup

PlacementTargetPlacement、 、HorizontalOffset、およびVerticalOffsetの各Popupプロパティが相互にどのように関連しているかを理解するには、次の用語が役立ちます。 PlacementRectangleThe following terms are useful in understanding how the PlacementTarget, Placement, PlacementRectangle, HorizontalOffset, and VerticalOffset properties relate to each other and the Popup:

  • ターゲット オブジェクトTarget object

  • ターゲット領域Target area

  • ターゲットの始点Target origin

  • ポップアップ配置ポイントPopup alignment point

これらの用語は、 Popupとそれに関連付けられているコントロールのさまざまな側面を参照するための便利な方法を提供します。These terms provide a convenient way to refer to various aspects of the Popup and the control that it is associated with.

ターゲット オブジェクトTarget Object

ターゲットオブジェクトは、 Popupが関連付けられている要素です。The target object is the element that the Popup is associated with. PlacementTargetプロパティが設定されている場合は、対象のオブジェクトを指定します。If the PlacementTarget property is set, it specifies the target object. PlacementTarget 設定Popupされておらず、に親がある場合、親はターゲットオブジェクトです。If PlacementTarget is not set, and the Popup has a parent, the parent is the target object. 値がなくPlacementTarget 、親も存在しない場合、対象オブジェクトPopupはなく、は画面に対して相対的に配置されます。If there is no PlacementTarget value and no parent, there is no target object, and the Popup is positioned relative to the screen.

PopupCanvasの例では、の子であるを作成します。The following example creates a Popup that is the child of a Canvas. この例では、 PlacementTarget Popupでプロパティを設定しません。The example does not set the PlacementTarget property on the Popup. Placement既定値はPlacementMode.BottomであるためPopup 、はのCanvas下に表示されます。The default value for Placement is PlacementMode.Bottom, so the Popup appears below the Canvas.

<Canvas Margin="5" Background="Red" Width="200" Height="150" >

  <Ellipse Canvas.Top="60" Canvas.Left="50"
           Height="85" Width="60" 
           Fill="Black"/>

  <Popup IsOpen="True" >
    <TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
  </Popup>
</Canvas>

次の図は、 PopupCanvasに対して相対的に配置されていることを示しています。The following illustration shows that the Popup is positioned relative to the Canvas.

移動操作がないポップアップコントロールPopup control with no PlacementTarget

次の例ではPopupCanvasの子であるを作成しますが、 PlacementTarget今回はにellipse1設定されるため、ポップアップはEllipseの下に表示されます。The following example creates a Popup that is the child of a Canvas, but this time the PlacementTarget is set to ellipse1, so the popup appears below the Ellipse.

<Canvas Margin="5" Background="Red" Width="200" Height="150" >

  <Ellipse Name="ellipse1"
           Canvas.Top="60" Canvas.Left="50"
           Height="85" Width="60" 
           Fill="Black"/>

  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=ellipse1}">
    <TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
  </Popup>
</Canvas>

次の図は、 PopupEllipseに対して相対的に配置されていることを示しています。The following illustration shows that the Popup is positioned relative to the Ellipse.

楕円の相対位置に配置されたポップアップPopup positioned relative to an ellipse

注意

の既定Placement値はMouseです。 ToolTipFor ToolTip, the default value of Placement is Mouse. の既定Placement値はMousePointです。 ContextMenuFor ContextMenu, the default value of Placement is MousePoint. これらの値については、後ほど「プロパティの連携のしくみ」で説明します。These values are explained later, in "How the Properties Work Together."

ターゲット領域Target Area

ターゲット領域は、 Popupが基準とする画面上の領域です。The target area is the area on the screen that the Popup is relative to. 前の例Popupでは、はターゲットオブジェクトの境界に合わせてアラインされていますがPopup 、にはターゲットオブジェクトがある場合Popupでも、が他の境界にアラインされている場合があります。In the previous examples, the Popup is aligned with the bounds of the target object, but in some cases, the Popup is aligned to other bounds, even if the Popup has a target object. PlacementRectangleプロパティが設定されている場合、ターゲット領域はターゲットオブジェクトの境界とは異なります。If the PlacementRectangle property is set, the target area is different than the bounds of the target object.

次の例ではCanvasRectanglePopupを含む2つのオブジェクトを作成します。The following example creates two Canvas objects, each one containing a Rectangle and a Popup. どちらの場合も、のターゲットオブジェクトPopup Canvasはです。In both cases, the target object for the Popup is the Canvas. 最初Popup PlacementRectangle Width Height Yののは、セットを持ち、、 X、、およびの各プロパティはそれぞれ50、50、50、100に設定されています。 CanvasThe Popup in the first Canvas has the PlacementRectangle set, with its X, Y, Width, and Height properties set to 50, 50, 50, and 100, respectively. 2番目CanvasPlacementRectangleには、セットがありません。 PopupThe Popup in the second Canvas does not have the PlacementRectangle set. Popupその結果、最初のはのPlacementRectangle下に配置され、 Popup 2 番目のCanvasはの下に配置されます。As a result, the first Popup is positioned below the PlacementRectangle and the second Popup is positioned below the Canvas. またCanvas 、それぞれPlacementRectangleRectangleは、最初Popupのと同じ境界を持つが含まれています。Each Canvas also contains a Rectangle that has the same bounds as the PlacementRectangle for the first Popup. は、アプリケーションPlacementRectangleに表示される要素を作成しないことに注意してRectangle PlacementRectangleください。この例では、を表すを作成します。Note that the PlacementRectangle does not create a visible element in the application; the example creates a Rectangle to represent the PlacementRectangle.

<StackPanel Orientation="Horizontal" Margin="50,50,0,0">

  <Canvas Width="200" Height="200" Background="Red">
    <Rectangle Canvas.Top="50" Canvas.Left="50" 
               Width="50" Height="100"
               Stroke="White" StrokeThickness="3"/>
    <Popup IsOpen="True" PlacementRectangle="50,50,50,100">
      <TextBlock FontSize="14" Background="Yellow"
                 Width="140" TextWrapping="Wrap">
        This is a popup with a PlacementRectangle.
      </TextBlock>
    </Popup>
  </Canvas>
  
  <Canvas Width="200" Height="200" Background="Red" Margin="30,0,0,0">
    <Rectangle Canvas.Top="50" Canvas.Left="50" 
               Width="50" Height="100"
               Stroke="White" StrokeThickness="3"/>
    <Popup IsOpen="True">
      <TextBlock FontSize="14" Background="Yellow"
                 Width="140" TextWrapping="Wrap">
        This is a popup without a PlacementRectangle.
      </TextBlock>
    </Popup>
  </Canvas>
  
</StackPanel>

次の図は、前の例の結果を示しています。The following illustration shows the result of the preceding example.

ショートカットの有無を含むポップアップPopup with and without PlacementRectangle

ターゲットの始点とポップアップ配置ポイントTarget Origin and Popup Alignment Point

ターゲットの始点ポップアップ配置ポイントは、それぞれターゲット領域とポップアップ上の基準点であり、配置に使用します。The target origin and popup alignment point are reference points on the target area and popup, respectively, that are used for positioning. プロパティHorizontalOffsetVerticalOffsetプロパティを使用して、ターゲット領域からポップアップをオフセットできます。You can use the HorizontalOffset and VerticalOffset properties to offset the popup from the target area. HorizontalOffsetVerticalOffsetは、ターゲットの起点とポップアップの配置ポイントを基準としています。The HorizontalOffset and VerticalOffset are relative to the target origin and the popup alignment point. Placementプロパティの値によって、ターゲットの元とポップアップの配置ポイントが配置されている場所が決まります。The value of the Placement property determines where the target origin and popup alignment point are located.

次の例ではPopup 、を作成HorizontalOffsetVerticalOffset 、プロパティとプロパティを20に設定します。The following example creates a Popup and sets the HorizontalOffset and VerticalOffset properties to 20. プロパティが (既定値Bottom ) に設定されているため、ターゲットの起点はターゲット領域の左下隅、ポップアップ配置ポイントはの左上隅Popupになります。 PlacementThe Placement property is set to Bottom (the default), so the target origin is the bottom-left corner of the target area and the popup alignment point is the top-left corner of the Popup.

<Canvas Width="200" Height="200" Background="Yellow" Margin="20">
  <Popup IsOpen="True" Placement="Bottom"
         HorizontalOffset="20" VerticalOffset="20">
    <TextBlock FontSize="14" Background="#42F3FD">
      This is a popup.
    </TextBlock>
  </Popup>
</Canvas>

次の図は、前の例の結果を示しています。The following illustration shows the result of the preceding example.

ターゲットの配信元の配置ポイントを含むポップアップ配置Popup placement with target origin alignment point

プロパティの連携のしくみHow the Properties Work Together

PlacementTargetPlacementRectangleおよびの値は、正しいターゲット領域、ターゲットの始点、およびポップアップ配置ポイントを確認するために、まとめて考慮する必要Placementがあります。The values of PlacementTarget, PlacementRectangle, and Placement need to be considered together to figure out the correct target area, target origin, and popup alignment point. たとえば、のPlacement値がMouseである場合、対象オブジェクトが存在PlacementRectangleせず、が無視され、ターゲット領域がマウスポインターの境界になります。For example, if the value of Placement is Mouse, there is no target object, the PlacementRectangle is ignored, and the target area is the bounds of the mouse pointer. 一方Placement 、がBottom PlacementRectangleの場合、または親はターゲットオブジェクトを決定し、ターゲット領域を決定します。 PlacementTargetOn the other hand, if Placement is Bottom, the PlacementTarget or parent determines the target object and PlacementRectangle determines the target area.

次の表では、ターゲットオブジェクト、ターゲット領域、ターゲットの始点、およびポップアップの配置ポイントPlacementTargetPlacementRectangleついて説明しPlacementMode 、各列挙値にとが使用されるかどうかを示します。The following table describes the target object, target area, target origin, and popup alignment point and indicates whether PlacementTarget and PlacementRectangle are used for each PlacementMode enumeration value.

PlacementModePlacementMode ターゲット オブジェクトTarget object ターゲット領域Target area ターゲットの始点Target origin ポップアップ配置ポイントPopup alignment point
Absolute 該当なし。Not applicable. PlacementTargetは無視されます。PlacementTarget is ignored. 画面。設定さPlacementRectangleれている場合は。The screen, or PlacementRectangle if it is set. PlacementRectangle 、画面に対して相対的です。The PlacementRectangle is relative to the screen. ターゲット領域の左上隅。The top-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
AbsolutePoint 該当なし。Not applicable. PlacementTargetは無視されます。PlacementTarget is ignored. 画面。設定さPlacementRectangleれている場合は。The screen, or PlacementRectangle if it is set. PlacementRectangle 、画面に対して相対的です。The PlacementRectangle is relative to the screen. ターゲット領域の左上隅。The top-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
Bottom PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の左下隅。The bottom-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
Center PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の中央。The center of the target area. Popup中央。The center of the Popup.
Custom PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. によっCustomPopupPlacementCallbackて定義されます。Defined by the CustomPopupPlacementCallback. によっCustomPopupPlacementCallbackて定義されます。Defined by the CustomPopupPlacementCallback.
Left PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の左上隅。The top-left corner of the target area. の右上隅PopupThe top-right corner of the Popup.
Mouse 該当なし。Not applicable. PlacementTargetは無視されます。PlacementTarget is ignored. マウス ポインターの境界。The bounds of the mouse pointer. PlacementRectangleは無視されます。PlacementRectangle is ignored. ターゲット領域の左下隅。The bottom-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
MousePoint 該当なし。Not applicable. PlacementTargetは無視されます。PlacementTarget is ignored. マウス ポインターの境界。The bounds of the mouse pointer. PlacementRectangleは無視されます。PlacementRectangle is ignored. ターゲット領域の左上隅。The top-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
Relative PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の左上隅。The top-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
RelativePoint PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の左上隅。The top-left corner of the target area. の左上隅PopupThe top-left corner of the Popup.
Right PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の右上隅。The top-right corner of the target area. の左上隅PopupThe top-left corner of the Popup.
Top PlacementTargetまたは親。PlacementTarget or parent. ターゲットオブジェクト。設定さPlacementRectangleれている場合は。The target object, or PlacementRectangle if it is set. PlacementRectangle 、対象オブジェクトに対する相対パスです。The PlacementRectangle is relative to the target object. ターゲット領域の左上隅。The top-left corner of the target area. の左下隅PopupThe bottom-left corner of the Popup.

次の図は、 PopupPlacementMode値の、ターゲット領域、ターゲットの始点、およびポップアップの配置ポイントを示しています。The following illustrations show the Popup, target area, target origin, and popup alignment point for each PlacementMode value. 各図形では、ターゲット領域は黄色、 Popupは青になります。In each figure, the target area is yellow, and the Popup is blue.

Absolute または AbsolutePoint placement を使用したポップアップPopup with Absolute or AbsolutePoint placement

![下に配置]されるポップアップ(./media/popup-placement-behavior/popup-placement-bottom.png "Placement は Bottom です。")Popup with Bottom placement

中央配置を含むポップアップPopup with Center placement

左側の配置を含むポップアップPopup with Left placement

マウスの配置を含むポップアップPopup with Mouse placement

MousePoint 配置を含むポップアップPopup with MousePoint placement

相対または RelativePoint 配置を含むポップアップPopup with Relative or RelativePoint placement

右側の配置を含むポップアップPopup with Right placement

Top 配置を含むポップアップPopup with Top placement

ポップアップが画面の端と重なった場合When the Popup Encounters the Edge of the Screen

セキュリティ上の理由からPopup 、を画面の端で非表示にすることはできません。For security reasons, a Popup cannot be hidden by the edge of a screen. 次の3つのうちの1つPopupは、が画面の端に遭遇したときに発生します。One of the following three things happens when the Popup encounters a screen edge:

  • ポップアップは、がPopup見えなくなる画面の端に沿って再配置されます。The popup realigns itself along the screen edge that would obscure the Popup.

  • ポップアップは別のポップアップ配置ポイントを使用します。The popup uses a different popup alignment point.

  • ポップアップは別のターゲットの始点とポップアップ配置ポイントを使用します。The popup uses a different target origin and popup alignment point.

これらのオプションについては、このセクションの後半で詳しく説明します。These options are described further later in this section.

画面の端がPopup検出されたときの動作は、 Placementプロパティの値とポップアップが検出する画面の端によって異なります。The behavior of the Popup when it encounters a screen edge depends on the value of the Placement property and which screen edge the popup encounters. 次の表は、が各Popup PlacementMode値に対して画面の端を検出した場合の動作をまとめたものです。The following table summarizes the behavior when the Popup encounters a screen edge for each PlacementMode value.

PlacementModePlacementMode 上端Top edge 下端Bottom edge 左端Left edge 右端Right edge
Absolute 上端に揃えます。Aligns to the top edge. 下端に揃えます。Aligns to the bottom edge. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.
AbsolutePoint 上端に揃えます。Aligns to the top edge. ポップアップ配置ポイントがのPopup左下隅に変わります。The popup alignment point changes to the bottom-left corner of the Popup. 左端に揃えます。Aligns to the left edge. ポップアップ配置ポイントがの右上隅Popupに変わります。The popup alignment point changes to the top-right corner of the Popup.
Bottom 上端に揃えます。Aligns to the top edge. ターゲットの原点が、ターゲット領域の左上隅に変わり、ポップアップ配置ポイントがの左下隅Popupに変わります。The target origin changes to the top-left corner of the target area and the popup alignment point changes to the bottom-left corner of the Popup. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.
Center 上端に揃えます。Aligns to the top edge. 下端に揃えます。Aligns to the bottom edge. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.
Left 上端に揃えます。Aligns to the top edge. 下端に揃えます。Aligns to the bottom edge. ターゲットの原点が、ターゲット領域の右上隅に変わり、ポップアップ配置ポイントがのPopup左上隅に変わります。The target origin changes to the top-right corner of the target area and the popup alignment point changes to the top-left corner of the Popup. 右端に揃えます。Aligns to the right edge.
Mouse 上端に揃えます。Aligns to the top edge. ターゲットの原点が、 Popupターゲット領域の左上隅 (マウスポインターの境界) に変わり、ポップアップの配置ポイントがの左下隅に変わりますが、The target origin changes to the top-left corner of the target area (the bounds of the mouse pointer) and the popup alignment point changes to the bottom-left corner of the Popup. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.
MousePoint 上端に揃えます。Aligns to the top edge. ポップアップ配置ポイントがのPopup左下隅に変わります。The popup alignment point changes to the bottom-left corner of the Popup. 左端に揃えます。Aligns to the left edge. ポップアップ配置ポイントが、ポップアップの右上隅に変更されます。The popup alignment point changes to the top-right corner of the popup.
Relative 上端に揃えます。Aligns to the top edge. 下端に揃えます。Aligns to the bottom edge. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.
RelativePoint 上端に揃えます。Aligns to the top edge. ポップアップ配置ポイントがのPopup左下隅に変わります。The popup alignment point changes to the bottom-left corner of the Popup. 左端に揃えます。Aligns to the left edge. ポップアップ配置ポイントが、ポップアップの右上隅に変更されます。The popup alignment point changes to the top-right corner of the popup.
Right 上端に揃えます。Aligns to the top edge. 下端に揃えます。Aligns to the bottom edge. 左端に揃えます。Aligns to the left edge. ターゲットの原点が、ターゲット領域の左上隅に変わり、ポップアップ配置ポイントがの右上隅Popupに変わります。The target origin changes to the top-left corner of the target area and the popup alignment point changes to the top-right corner of the Popup.
Top ターゲットの原点が、ターゲット領域の左下隅に変わり、ポップアップ配置ポイントがの左上隅Popupに変わります。The target origin changes to the bottom-left corner of the target area and the popup alignment point changes to the top-left corner of the Popup. 実際には、は、がPlacement Bottomの場合と同じです。In effect, this is the same as when Placement is Bottom. 下端に揃えます。Aligns to the bottom edge. 左端に揃えます。Aligns to the left edge. 右端に揃えます。Aligns to the right edge.

画面の端への配置Aligning to the Screen Edge

Popup 、画面上に全体Popupが表示されるように再配置することで、画面の端に合わせることができます。A Popup can align to the edge of the screen by repositioning itself so the entire Popup is visible on the screen. この場合、ターゲットの始点とポップアップの配置ポイント間の距離は、およびのHorizontalOffset値とVerticalOffset異なる場合があります。When this occurs, the distance between the target origin and popup alignment point might differ from the values of HorizontalOffset and VerticalOffset. PlacementAbsolute 、またRelativeはの場合Popup 、はすべての画面の端に合わせて配置されます。 CenterWhen Placement is Absolute, Center, or Relative, the Popup aligns itself to every screen edge. たとえば、 PopupがにPlacement Relative設定され、が100に設定されているとします。VerticalOffsetFor example, assume that a Popup has Placement set to Relative and VerticalOffset set to 100. 画面の下端がのすべてまたは一部Popupを非表示にすると、はPopup画面の下端に沿って再配置され、ターゲットの始点とポップアップの配置ポイントの間の垂直方向の距離は100未満になります。If the bottom edge of the screen hides all or part of the Popup, the Popup repositions itself along the bottom edge of the screen and the vertical distance between the target origin and popup alignment point is less than 100. これを次の図で示します。The following illustration demonstrates this.

画面の端に揃えて配置されるポップアップPopup that aligns to edge of screen

ポップアップ配置ポイントの変更Changing the Popup Alignment Point

PlacementAbsolutePoint MousePoint、またはの場合、ポップアップが下または右の画面の端に達すると、ポップアップ配置ポイントが変更されます。 RelativePointIf Placement is AbsolutePoint, RelativePoint, or MousePoint, the popup alignment point changes when the popup encounters the bottom or right screen edge.

次の図は、下部画面の端がのすべてまたは一部Popupを非表示にしたときに、ポップアップ配置ポイントがの左下隅Popupにあることを示しています。The following illustration demonstrates that when the bottom screen edge hides all or part of the Popup, the popup alignment point is the bottom-left corner of the Popup.

画面の下端による新しい配置ポイントNew alignment point due to bottom screen edge

次の図は、が右側Popupの画面の端で非表示になっている場合に、ポップアップ配置ポイントがPopupの右上隅であることを示しています。The following illustration demonstrates that when the Popup is hidden by the right screen edge, the popup alignment point is the top-right corner of the Popup.

画面の端による新しいポップアップ配置ポイントNew popup alignment point due to screen edge

Popup下と右の画面の端を検出した場合、ポップアップの配置ポイントはPopupの右下隅になります。If the Popup encounters the bottom and right screen edges, the popup alignment point is the bottom-right corner of the Popup.

ターゲットの始点とポップアップ配置ポイントの変更Changing the Target Origin and Popup Alignment Point

Placement 、 、、、またLeft Bottomはの場合、特定の画面の端が検出されると、ターゲットの原点とポップアップの配置ポイントが変更されます。Top Mouse RightWhen Placement is Bottom, Left, Mouse, Right, or Top, the target origin and popup alignment point change if a certain screen edge is encountered. 位置を変更する画面の端は、 PlacementMode値によって異なります。The screen edge that causes the position to change depends on the PlacementMode value.

次の図は、がPlacement Bottom Popupで下部画面の端を検出したときに、ターゲットの始点がターゲット領域の左上隅にあり、ポップアップ配置ポイントがの左下隅にあることを示していますPopupThe following illustration demonstrates that when Placement is Bottom and the Popup encounters the bottom screen edge, the target origin is the top-left corner of the target area and the popup alignment point is the bottom-left corner of the Popup.

画面の下端による新しい配置ポイントNew alignment point due to bottom screen edge

次の図に示す時にPlacementLeftPopup画面の左端を検出したターゲットの基準は対象となる領域の右上隅にある、ポップアップ配置ポイント、の左上隅にありますPopupThe following illustration demonstrates that when Placement is Left and the Popup encounters the left screen edge, the target origin is the top-right corner of the target area and the popup alignment point is the top-left corner of the Popup.

画面の左端による新しい配置ポイントNew alignment point due to left screen edge

次の図は、がPlacementRightPopupが正しい画面の端を検出した場合に、ターゲットの始点がターゲット領域の左上隅にあり、ポップアップ配置ポイントがの右上隅であることを示していますPopupThe following illustration demonstrates that when Placement is Right and the Popup encounters the right screen edge, the target origin is the top-left corner of the target area and the popup alignment point is the top-right corner of the Popup.

画面の右端による新しい配置ポイントNew alignment point due to right screen edge

次の図は、がPlacement Top Popupで一番上の画面の端を検出したときに、ターゲットの原点がターゲット領域の左下隅にあり、ポップアップ配置ポイントがの左上隅にあることを示していますPopupThe following illustration demonstrates that when Placement is Top and the Popup encounters the top screen edge, the target origin is the bottom-left corner of the target area and the popup alignment point is the top-left corner of the Popup.

画面の上端による新しい配置ポイントNew alignment point due to top screen edge

次の図は、がPlacement Mouse Popupで下部画面の端を検出した場合に、ターゲット領域 (マウスポインターの境界) とポップアップの配置の左上隅にあることを示しています。point はのPopup左下隅です。The following illustration demonstrates that when Placement is Mouse and the Popup encounters the bottom screen edge, the target origin is the top-left corner of the target area (the bounds of the mouse pointer) and the popup alignment point is the bottom-left corner of the Popup.

画面の端に近いマウスによる新しい配置ポイントnew alignment point due to mouse near screen edge

ポップアップの配置のカスタマイズCustomizing Popup Placement

Placementプロパティをに設定するCustomことによって、ターゲットの始点とポップアップ配置ポイントをカスタマイズできます。You can customize the target origin and popup alignment point by setting the Placement property to Custom. 次に、 CustomPopupPlacementCallback Popupの一連の可能な配置ポイントと主軸 (優先順) を返すデリゲートを定義します。Then define a CustomPopupPlacementCallback delegate that returns a set of possible placement points and primary axes (in order of preference) for the Popup. の最大部分を示すポイントPopupが選択されています。The point that shows the largest portion of the Popup is selected. が画面の端Popupで非表示になっPopupている場合、の位置は自動的に調整されます。The position of the Popup is automatically adjusted if the Popup is hidden by the edge of the screen. 例については、「方法 : ポップアップのカスタム位置を指定する」をご覧ください。For an example, see Specify a Custom Popup Position.

関連項目See also