Position de la fenêtre de dialogue WPF-Set par rapport à la fenêtre principale?
je crée juste ma propre boîte vocale et je l'appelle en utilisant Window.ShowDialog ()
Comment obtenir la position par rapport à la fenêtre principale, i.e. 20px à partir du haut et centré.
Merci.
2 réponses
vous pouvez simplement utiliser la fenêtre .Fenêtre de gauche et .Top propriétés. Lisez - les à partir de votre fenêtre principale et assignez les valeurs (plus 20 px ou n'importe quoi d'autre) à la boîte D'envol avant appelant la méthode ShowDialog()
.
AboutBox dialog = new AboutBox();
dialog.Top = mainWindow.Top + 20;
pour l'avoir centré, vous pouvez aussi simplement utiliser la propriété WindowStartupLocation . Réglez cela sur WindowStartupLocation.CenterOwner
AboutBox dialog = new AboutBox();
dialog.Owner = Application.Current.MainWindow; // We must also set the owner for this to work.
dialog.WindowStartupLocation = WindowStartupLocation.CenterOwner;
si vous voulez qu'il soit centré horizontalement, mais pas verticalement (c.-à-d. La position verticale fixe), vous devrez le faire dans un EventHandler après que L'AboutBox a été chargé parce que vous aurez besoin de calculer la position horizontale en fonction de la largeur de L'AboutBox, et ce n'est connu qu'après qu'il a été chargé.
protected override void OnInitialized(...)
{
this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2;
this.Top = this.Owner.Top + 20;
}
gehho.
j'opterais pour la méthode manuelle, au lieu de compter sur WPF pour faire le calcul pour moi..
System.Windows.Point positionFromScreen = this.ABC.PointToScreen(new System.Windows.Point(0, 0));
PresentationSource source = PresentationSource.FromVisual(this);
System.Windows.Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(positionFromScreen);
AboutBox.Top = targetPoints.Y - this.ABC.ActualHeight + 15;
AboutBox.Left = targetPoints.X - 55;
où ABC
est quelque chose dans la fenêtre de parent (pourrait être propriétaire si vous voulez..), Et pourrait aussi être la fenêtre elle-même (en haut à gauche)..
bonne chance