方法: ポップアップのカスタム位置を指定する
この例では、Placement プロパティが Custom に設定されているときに、Popup コントロールのカスタム位置を指定する方法を示します。
例
Placement プロパティが Custom に設定されていると、Popup では定義されている CustomPopupPlacementCallback デリゲートのインスタンスが呼び出されます。 このデリゲートでは、ターゲット領域の左上隅と Popup の左上隅を基準として、一連の可能なポイントが返されます。 Popup は、視認性が最もよい場所に配置されます。
次の例では、Placement プロパティを Custom に設定することで Popup の位置を定義する方法が示されています。 また、Popup を配置するために CustomPopupPlacementCallback デリゲートを作成して割り当てる方法も示されています。 コールバック デリゲートでは、2 つの CustomPopupPlacement オブジェクトが返されます。 最初の位置では Popup が画面の端で見えなくなる場合、Popup は 2 番目の位置に配置されます。
<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)
サンプル全体については、ポップアップ配置のサンプルを参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Desktop feedback