Aracılığıyla paylaş


Nasıl yapılır: Özel Açılan Pencerenin Konumunu Belirtme

Bu örnekte, özelliği olarak ayarlandığında Customdenetim Popup için özel bir konum belirtme işlemi Placement gösterilmektedir.

Örnek

Placement özelliği olarak Customayarlandığında, Popup temsilcinin tanımlı bir örneğini CustomPopupPlacementCallback çağırır. Bu temsilci, hedef alanın sol üst köşesine ve sol üst köşesine Popupgöre bir olası nokta kümesi döndürür. Yerleştirme, Popup en iyi görünürlüğü sağlayan noktada gerçekleşir.

Aşağıdaki örnekte, özelliğini Customolarak ayarlayarak konumunun Popup nasıl tanımlanacağı gösterilmektedirPlacement. Ayrıca, öğesini konumlandırmak için temsilci CustomPopupPlacementCallback oluşturma ve atamayı Popupda gösterir. Geri çağırma temsilcisi iki CustomPopupPlacement nesne döndürür. Popup ilk konumda bir ekran kenarı tarafından gizlenirse, Popup ikinci konuma yerleştirilir.

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

Örneğin tamamı için bkz . Açılır Pencere Yerleştirme Örneği.

Ayrıca bkz.