Export (0) Print
Expand All

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
)
In XAML, you can use delegates but you cannot define your own.

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.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

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

.NET Framework

Supported in: 3.5, 3.0

Community Additions

ADD
Show:
© 2014 Microsoft