Cara: Menentukan Posisi Popup Kustom
Contoh ini menunjukkan cara menentukan posisi kustom untuk Popup kontrol saat Placement properti diatur ke Custom.
Contoh
Placement Ketika properti diatur ke Custom, Popup memanggil instans delegasi yang CustomPopupPlacementCallback ditentukan. Delegasi ini mengembalikan sekumpulan titik yang mungkin relatif terhadap sudut kiri atas area target dan sudut Popupkiri atas . Penempatan Popup terjadi pada titik yang memberikan visibilitas terbaik.
Contoh berikut menunjukkan cara menentukan posisi a Popup dengan mengatur Placement properti ke Custom. Ini juga menunjukkan cara membuat dan menetapkan CustomPopupPlacementCallback delegasi untuk memosisikan Popup. Delegasi panggilan balik mengembalikan dua CustomPopupPlacement objek. Jika disembunyikan Popup oleh tepi layar pada posisi pertama, Popup ditempatkan pada posisi kedua.
<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)
Untuk sampel lengkapnya, lihat Sampel Penempatan Popup.
Baca juga
.NET Desktop feedback