为了便于说明,我将在此处添加一个示例,说明如何实现类似目的。我需要的是一个弹出窗口,该弹出窗口覆盖了整个父窗口内容区域(标题栏除外),但是仅使对话框居中并拉伸其内容是行不通的,因为该对话框总是从底部偏移一点。
关于用户体验的注意事项:当显示无边界对话框时,无法拖动/关闭父窗口是不好的,所以我会重新考虑使用它。发布此答案后,我还决定不执行此操作,但将其留给其他人查看。
经过一些谷歌搜索和测试之后,我终于设法做到了:
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();
该DialogWindow
是一个窗口,它的主人被设置到应用程序主窗口。的WindowStartupLocation
必须设置为Manual
手动定位的工作。
结果:
我不知道是否有更简单的方法可以执行此操作,但是似乎没有其他方法适合我。