Để làm tài liệu, tôi sẽ thêm vào đây một ví dụ về cách tôi đạt được điều gì đó tương tự. Những gì tôi cần là một cửa sổ bật lên bao phủ toàn bộ khu vực nội dung Cửa sổ mẹ (không bao gồm thanh tiêu đề), nhưng chỉ cần căn giữa hộp thoại và kéo dài nội dung của nó không hoạt động vì hộp thoại luôn bị lệch một chút so với phía dưới.
Lưu ý về trải nghiệm người dùng: Thật không hay khi không thể kéo / đóng cửa sổ mẹ khi hộp thoại không viền đang hiển thị, vì vậy tôi sẽ xem xét lại việc sử dụng nó. Tôi cũng quyết định không làm điều này sau khi đăng câu trả lời này, nhưng sẽ để nó cho những người khác xem xét.
Sau một số googling và thử nghiệm, cuối cùng tôi đã làm được như thế này:
var dialog = new DialogWindow
{
Owner = this
};
dialog.WindowStartupLocation = WindowStartupLocation.Manual;
dialog.WindowStyle = WindowStyle.None;
dialog.ShowInTaskbar = false;
dialog.ResizeMode = ResizeMode.NoResize;
dialog.AllowsTransparency = true;
var ownerContent = (FrameworkElement) Content;
dialog.MaxWidth = ownerContent.ActualWidth;
dialog.Width = ownerContent.ActualWidth;
dialog.MaxHeight = ownerContent.ActualHeight;
dialog.Height = ownerContent.ActualHeight;
var contentPoints = ownerContent.PointToScreen(new Point(0, 0));
dialog.Left = contentPoints.X;
dialog.Top = contentPoints.Y;
dialog.ShowDialog();
Đây DialogWindow
là một Cửa sổ và chủ sở hữu của nó được đặt thành Cửa sổ ứng dụng chính. Các WindowStartupLocation
phải được đặtManual
cho việc định vị bằng tay để làm việc.
Kết quả:
Tôi không biết có cách nào dễ dàng hơn để làm điều này không, nhưng dường như không có cách nào khác hiệu quả với tôi.