Sdílet prostřednictvím


Jak: Určení vlastní pozice vyskakovacího okna

Tento příklad ukazuje, jak určit vlastní pozici pro Popup ovládací prvek, když je vlastnost Placement nastavena na Custom.

Příklad

Pokud je vlastnost Placement nastavena na Custom, Popup volá definovanou instanci CustomPopupPlacementCallback delegáta. Tento delegát vrátí sadu možných bodů, které jsou vyjádřeny relativně vůči levému hornímu rohu cílové oblasti a levému hornímu rohu Popup. Umístění Popup probíhá v bodě, který poskytuje nejlepší viditelnost.

Následující příklad ukazuje, jak definovat pozici Popup nastavením vlastnosti Placement na Custom. Také ukazuje, jak vytvořit a přiřadit delegáta CustomPopupPlacementCallback, aby se určila pozice Popup. Delegát zpětného volání vrátí dva CustomPopupPlacement objekty. Pokud je Popup skrytý okrajem obrazovky na první pozici, Popup se umístí na druhou pozici.

 <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)

Kompletní ukázku najdete v ukázce umístění vyskakovací nabídky .

Viz také