Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

CustomPopupPlacement Structure

Defines custom placement parameters for a Popup control.

Namespace:  System.Windows.Controls.Primitives
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
public struct CustomPopupPlacement
<CustomPopupPlacement .../>

The CustomPopupPlacement type exposes the following members.

  NameDescription
Public methodCustomPopupPlacementInitializes a new instance of the CustomPopupPlacement structure.
Top
  NameDescription
Public propertyPointGets or sets the point that is relative to the target object where the upper-left corner of the Popup control is placedl.
Public propertyPrimaryAxisGets or sets the direction in which to move a Popup control when the Popup is obscured by screen boundaries.
Top
  NameDescription
Public methodEqualsCompares this structure with another CustomPopupPlacement structure to determine whether they are equal. (Overrides ValueType.Equals(Object).)
Public methodGetHashCodeGets the hash code for this structure. (Overrides ValueType.GetHashCode().)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodToStringReturns the fully qualified type name of this instance. (Inherited from ValueType.)
Top
  NameDescription
Public operatorStatic memberEqualityCompares two CustomPopupPlacement structures to determine whether they are equal.
Public operatorStatic memberInequalityCompares two CustomPopupPlacement structures to determine whether they are not equal.
Top

The CustomPopupPlacement structure defines a location for a Popup control with respect to its parent, and defines how the Popup moves to become more visible when it is obscured by a screen boundary.

A System.Windows.Controls.Primitives.CustomPopupPlacementCallback delegate returns an array of these structures as custom placement options for a Popup when the Placement property is set to Custom.

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.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, 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.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.