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

Popup コントロールでは、アプリケーション上をフローティングする別のウィンドウにコンテンツが表示されます。A Popup control displays content in a separate window that floats over an application. PlacementTargetPlacementPlacementRectangleHorizontalOffsetVerticalOffset の各プロパティを使用することにより、コントロール、マウス、または画面を基準にして Popup の位置を指定できます。You 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.

注意

ToolTip クラスと ContextMenu クラスでも、これら 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. 次の例では、UIElement (ここでは画像) を基準として 4 つの Popup コントロールを作成します。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

この簡単な例では、PlacementTarget プロパティと Placement プロパティを設定する方法が示されていますが、PlacementRectangleHorizontalOffsetVerticalOffset の各プロパティを使用することにより、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

次の用語は、PlacementTargetPlacementPlacementRectangleHorizontalOffsetVerticalOffset の各プロパティの相互関係および Popup との関係を理解するのに役立ちます。The 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.

次の例では、Canvas の子である Popup を作成します。The following example creates a Popup that is the child of a Canvas. この例では、PopupPlacementTarget プロパティは設定されていません。The example does not set the PlacementTarget property on the Popup. Placement の既定値は PlacementMode.Bottom であるため、PopupCanvas の下に表示されます。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>

次の図では、Canvas を基準にして配置された Popup が示されています。The following illustration shows that the Popup is positioned relative to the Canvas.

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

次の例では、Canvas の子である Popup が作成されますが、ここでは PlacementTargetellipse1 に設定しているため、ポップアップは 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>

次の図では、Ellipse を基準にして配置された Popup が示されています。The following illustration shows that the Popup is positioned relative to the Ellipse.

楕円を基準にして配置されるポップアップPopup positioned relative to an ellipse

注意

ToolTip の場合、Placement の既定値は Mouse です。For ToolTip, the default value of Placement is Mouse. ContextMenu の場合、Placement の既定値は MousePoint です。For 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.

次の例では、2 つの Canvas オブジェクトが作成され、それぞれに RectanglePopup が含まれます。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. 1 つ目の CanvasPopup では PlacementRectangle が設定されており、X プロパティは 50、Y プロパティは 50、Width プロパティは 50、Height プロパティは 100 に設定されています。The 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 つ目の CanvasPopup では、PlacementRectangle は設定されていません。The Popup in the second Canvas does not have the PlacementRectangle set. そのため、1 つ目の PopupPlacementRectangle の下に配置され、2 つ目の PopupCanvas の下に配置されます。As a result, the first Popup is positioned below the PlacementRectangle and the second Popup is positioned below the Canvas. Canvas には、1 つ目の Popup に対する PlacementRectangle の境界と同じ境界をもつ Rectangle も含まれています。Each Canvas also contains a Rectangle that has the same bounds as the PlacementRectangle for the first Popup. PlacementRectangle では、アプリケーションに表示される要素が作成されないことに注意してください。例では、PlacementRectangle を表すために Rectangle が作成されています。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.

PlacementRectangle がある (またはない) ポップアップ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. HorizontalOffset プロパティと VerticalOffset プロパティを使用して、ターゲット領域からポップアップをオフセットすることができます。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 を作成し、HorizontalOffset プロパティと VerticalOffset プロパティを 20 に設定しています。The following example creates a Popup and sets the HorizontalOffset and VerticalOffset properties to 20. Placement プロパティが Bottom (既定値) に設定されているため、ターゲットの始点はターゲット領域の左下隅で、ポップアップ配置ポイントは Popup の左上隅になります。The 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

適切なターゲット領域、ターゲットの始点、ポップアップ配置ポイントを見出すには、PlacementTargetPlacementRectanglePlacement の値をまとめて考慮する必要があります。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. 一方、PlacementBottom の場合は、PlacementTarget または親によってターゲット オブジェクトが決定され、ターゲット領域は PlacementRectangle によって決まります。On 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. 画面、または設定されている場合は PlacementRectangleThe screen, or PlacementRectangle if it is set. PlacementRectangle の基準は画面です。The PlacementRectangle is relative to the screen. ターゲット領域の左上隅。The top-left corner of the target area. Popup の左上隅。The top-left corner of the Popup.
AbsolutePoint 該当なし。Not applicable. PlacementTarget は無視されます。PlacementTarget is ignored. 画面、または設定されている場合は PlacementRectangleThe screen, or PlacementRectangle if it is set. PlacementRectangle の基準は画面です。The PlacementRectangle is relative to the screen. ターゲット領域の左上隅。The top-left corner of the target area. Popup の左上隅。The top-left corner of the Popup.
Bottom PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の左上隅。The top-left corner of the Popup.
Center PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の右上隅。The 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. Popup の左上隅。The 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. Popup の左上隅。The top-left corner of the Popup.
Relative PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の左上隅。The top-left corner of the Popup.
RelativePoint PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の左上隅。The top-left corner of the Popup.
Right PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の左上隅。The top-left corner of the Popup.
Top PlacementTarget または親。PlacementTarget or parent. ターゲット オブジェクト、または設定されている場合は PlacementRectangleThe 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. Popup の左下隅。The bottom-left corner of the Popup.

次の図では、PlacementMode の各値に対する Popup、ターゲット領域、ターゲットの始点、ポップアップ配置ポイントが示されています。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 配置を含むポップアップPopup with Absolute or AbsolutePoint placement

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

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

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

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

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

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

Right 配置を含むポップアップ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. Popup が画面の端と重なると、次の 3 つの処理のいずれかが行われます。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. つまりこれは、PlacementBottom の場合と同じです。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. PlacementAbsoluteCenter、または Relative の場合、Popup は画面のすべての端に揃えて配置されます。When Placement is Absolute, Center, or Relative, the Popup aligns itself to every screen edge. たとえば、Popup で、PlacementRelative に設定され、VerticalOffset が 100 に設定されているとします。For 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

PlacementAbsolutePointRelativePoint、または MousePoint の場合、ポップアップが画面の下端または右端と重なると、ポップアップ配置ポイントが変更されます。If 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

PlacementBottomLeftMouseRight、または Top の場合は、画面の端と重なるとターゲットの始点とポップアップ配置ポイントが変更されます。When 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.

次の図では、PlacementBottom で、Popup が画面の下端と重なった場合、ターゲットの始点がターゲット領域の左上隅、ポップアップ配置ポイントが Popup の左下隅になることが示されています。The 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

次の図では、PlacementLeft で、Popup が画面の左端と重なった場合、ターゲットの始点がターゲット領域の右上隅、ポップアップ配置ポイントが Popup の左上隅になることが示されています。The 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

次の図では、PlacementRight で、Popup が画面の右端と重なった場合、ターゲットの始点がターゲット領域の左上隅、ポップアップ配置ポイントが Popup の右上隅になることが示されています。The 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

次の図では、PlacementTop で、Popup が画面の上端と重なった場合、ターゲットの始点がターゲット領域の左下隅、ポップアップ配置ポイントが Popup の左上隅になることが示されています。The 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

次の図では、PlacementMouse で、Popup が画面の下端と重なった場合、ターゲットの始点がターゲット領域 (マウス ポインターの境界) の左上隅、ポップアップ配置ポイントが 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. 次に、Popup に対して可能な一連の配置ポイントとプライマリ軸を (優先順に) 返す CustomPopupPlacementCallback デリゲートを定義します。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