Zur Dokumentation füge ich hier ein Beispiel hinzu, wie ich etwas Ähnliches erreicht habe. Was ich brauchte, war ein Popup, das den gesamten Inhaltsbereich des übergeordneten Fensters (mit Ausnahme der Titelleiste) abdeckte, aber das einfache Zentrieren des Dialogfelds und das Erweitern des Inhalts funktionierte nicht, da das Dialogfeld immer etwas nach unten versetzt war.
Hinweis zur Benutzererfahrung: Es ist nicht schön, das übergeordnete Fenster nicht ziehen / schließen zu können, wenn das randlose Dialogfeld angezeigt wird. Daher würde ich die Verwendung überdenken. Ich habe mich auch entschieden, dies nicht zu tun, nachdem ich diese Antwort gepostet habe, sondern werde es anderen überlassen, sie anzuschauen.
Nach einigem googeln und testen habe ich es endlich so gemacht:
var dialog = new DialogWindow
{
//this = MainWindow
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();
Das DialogWindow
ist ein Fenster und sein Besitzer ist auf das Hauptanwendungsfenster eingestellt. Das WindowStartupLocation
muss auf eingestellt sein, Manual
damit die manuelle Positionierung funktioniert.
Ergebnis:
Ich weiß nicht, ob es einen einfacheren Weg gibt, aber nichts anderes schien für mich zu funktionieren.