È possibile utilizzare semplicemente le proprietà Window.Left e Window.Top. Leggile dalla finestra principale e assegna i valori (più 20 px o altro) a AboutBox prima del chiamando il metodo ShowDialog()
.
AboutBox dialog = new AboutBox();
dialog.Top = mainWindow.Top + 20;
di averlo centrato, si può anche semplicemente utilizzare la proprietà WindowStartupLocation. Impostare questo 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;
Se si vuole che sia centrato orizzontalmente, ma non verticalmente (cioè fisso posizione verticale), si dovrà farlo in un EventHandler dopo l'AboutBox è stato caricato perché è necessario calcola la posizione orizzontale in base alla larghezza di AboutBox e questo è noto solo dopo che è stato caricato.
protected override void OnInitialized(...)
{
this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth)/2;
this.Top = this.Owner.Top + 20;
}
gehho.
Grazie gehho. – empo
funziona anche per DataGridCell (all'interno di DataGrid wpf4))? apparentemente no. – neebz
@nEEbz: cosa intendi? Vuoi spostare un 'DataGridCell' relativo alla finestra principale ?? Non capisco la relazione con la domanda originale. Si prega di elaborare. – gehho