Nasıl yapılır: Özel Açılan Pencerenin Konumunu Belirtme
Bu örnekte, özelliği olarak ayarlanırken bir denetim Popup için özel konum Placement belirtmeyi Custom gösterir.
Örnek
özelliği Placement olarak ayarlandığı Custom zaman, Popup temsilcinin tanımlı bir örneğini CustomPopupPlacementCallback arar. Bu temsilci, hedef alanı ve sol üst köşesinin sol üst köşesine göre bir dizi olası nokta Popup 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 olarak ayarlayarak bir Popup konumunun nasıl Placement tanımladığınız Custom gösterir. Ayrıca, 'i konumlandırmak için temsilci CustomPopupPlacementCallback oluşturma ve atamayı da Popup gösterir. Geri çağırma temsilcisi iki nesne CustomPopupPlacement döndürür. , Popup ilk konumdaki 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)
Tam örnek için bkz. Açılır Yerleştirme Örneği.