Anvisningar: Ange en anpassad popup-position
Det här exemplet visar hur du anger en anpassad position för en Popup kontroll när egenskapen Placement är inställd på Custom.
Exempel
När egenskapen Placement är inställd på Customanropar Popup en definierad instans av CustomPopupPlacementCallback-ombudet. Det här delegatet returnerar en uppsättning möjliga punkter som är relaterade till det övre vänstra hörnet av målområdet och det övre vänstra hörnet av Popup. Popup placeringen sker vid den punkt som ger mest synlighet.
I följande exempel visas hur du definierar positionen för en Popup genom att ange egenskapen Placement till Custom. Den visar också hur du skapar och tilldelar ett CustomPopupPlacementCallback delegat för att placera Popup. Återanropsdelegaten returnerar två CustomPopupPlacement objekt. Om Popup döljs av en skärmkant vid den första positionen placeras Popup på den andra positionen.
<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;
}
Public Function placePopup(ByVal popupSize As Size, ByVal targetSize As Size, ByVal offset As Point) As CustomPopupPlacement()
Dim placement1 As New CustomPopupPlacement(New Point(-50, 100), PopupPrimaryAxis.Vertical)
Dim placement2 As New CustomPopupPlacement(New Point(10, 20), PopupPrimaryAxis.Horizontal)
Dim ttplaces() As CustomPopupPlacement = { placement1, placement2 }
Return ttplaces
End Function
popup1.CustomPopupPlacementCallback =
new CustomPopupPlacementCallback(placePopup);
popup1.CustomPopupPlacementCallback = New CustomPopupPlacementCallback(AddressOf placePopup)
Det fullständiga exemplet finns i Exempel på popup-placering.
Se även
.NET Desktop feedback