Comment : spécifier une position de menu contextuel personnalisée
Mise à jour : novembre 2007
Cet exemple montre comment spécifier une position personnalisée pour un contrôle Popup lorsque la propriété Placement a la valeur Custom.
Exemple
Lorsque la propriété Placement a la valeur Custom, le Popup appelle une instance définie du délégué CustomPopupPlacementCallback. Ce délégué retourne un jeu de points possibles qui sont relatifs au coin supérieur gauche de la zone cible et au coin supérieur gauche du Popup. L'emplacement du Popup a lieu au point qui fournit la meilleure visibilité.
L'exemple suivant montre comment définir la position d'un Popup en affectant Custom à la propriété Placement. Il indique également comment créer et assigner un délégué CustomPopupPlacementCallback afin de positionner le Popup. Le délégué de rappel retourne deux objets CustomPopupPlacement. Si le Popup est masqué par un bord d'écran à la première position, le Popup est placé à la deuxième 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);
Pour l'exemple complet, consultez Positionnement de Popup, exemple.