Bạn chỉ cần sử dụng các thuộc tính Window.Left và Window.Top. Đọc chúng từ cửa sổ chính của bạn và gán các giá trị (cộng 20 px hoặc bất kỳ thứ gì) cho AboutBox trước gọi phương thức ShowDialog()
.
AboutBox dialog = new AboutBox();
dialog.Top = mainWindow.Top + 20;
Để căn giữa, bạn cũng có thể chỉ cần sử dụng thuộc tính WindowStartupLocation. Thiết lập này để 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;
Nếu bạn muốn nó được tập trung theo chiều ngang, nhưng không phải theo chiều dọc (tức là cố định thẳng đứng vị trí), bạn sẽ phải làm điều đó trong một EventHandler sau AboutBox đã được nạp bởi vì bạn sẽ cần phải tính toán vị trí nằm ngang phụ thuộc vào chiều rộng của AboutBox, và điều này chỉ được biết sau khi nó đã được nạp.
protected override void OnInitialized(...)
{
this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth)/2;
this.Top = this.Owner.Top + 20;
}
gehho.
Cảm ơn bạn gehho. – empo
sẽ làm việc này cho DataGridCell (bên trong DataGrid wpf4)) quá? rõ ràng là không. – neebz
@nEEbz: Ý của bạn là gì? Bạn có muốn di chuyển một 'DataGridCell' liên quan đến cửa sổ chính không ?? Tôi không hiểu mối quan hệ với câu hỏi ban đầu. Xin hãy giải thích. – gehho