Export (0) Print
Expand All
Expand Minimize

CustomPopupPlacementCallback Delegate

Represents a method that provides custom positioning for a Popup control.

Namespace:  System.Windows.Controls.Primitives
Assembly:  PresentationFramework (in PresentationFramework.dll)

public delegate CustomPopupPlacement[] CustomPopupPlacementCallback(
	Size popupSize,
	Size targetSize,
	Point offset
)

Parameters

popupSize
Type: System.Windows.Size

The Size of the Popup control.

targetSize
Type: System.Windows.Size

The Size of the PlacementTarget.

offset
Type: System.Windows.Point

The Point computed from the HorizontalOffset and VerticalOffset property values.

Return Value

Type: System.Windows.Controls.Primitives.CustomPopupPlacement[]
An array of possible CustomPopupPlacement positions for the Popup control relative to the PlacementTarget.

When the Popup is displayed, a point is chosen that maximizes the amount of the ToolTip window that is visible. The ContextMenu, Popup and ToolTip classes each define a property of type CustomPopupPlacementCallback.

This example shows how to specify a custom position for a Popup control when the Placement property is set to Custom.

When the Placement property is set to Custom, the Popup calls a defined instance of the CustomPopupPlacementCallback delegate. This delegate returns a set of possible points that are relative to the top left corner of the target area and the top left corner of the Popup. The Popup placement occurs at the point that provides the best visibility.

The following example shows how to define the position of a Popup by setting the Placement property to Custom. It also shows how to create and assign a CustomPopupPlacementCallback delegate in order to position the Popup. The callback delegate returns two CustomPopupPlacement objects. If the Popup is hidden by a screen edge at the first position, the Popup is placed at the second position.

 <Popup Name="popup1"  
        PlacementTarget ="{Binding ElementName=myButton}" 
        Placement="Custom">
  <TextBlock Height="60" Width="200" 
             Background="LightGray"
             TextWrapping="Wrap">Popup positioned by using
  CustomPopupPlacement callback delegate</TextBlock>
</Popup>
public CustomPopupPlacement[] placePopup(Size popupSize,
                                           Size targetSize,
                                           Point offset)
{
    CustomPopupPlacement placement1 =
       new CustomPopupPlacement(new Point(-50, 100), PopupPrimaryAxis.Vertical);

    CustomPopupPlacement placement2 =
        new CustomPopupPlacement(new Point(10, 20), PopupPrimaryAxis.Horizontal);

    CustomPopupPlacement[] ttplaces =
            new CustomPopupPlacement[] { placement1, placement2 };
    return ttplaces;
}
popup1.CustomPopupPlacementCallback =
    new CustomPopupPlacementCallback(placePopup);

For the complete sample, see Popup Placement Sample.

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft