Ze względu na dokumentację dodam tutaj przykład, w jaki sposób osiągnąłem coś podobnego. Potrzebowałem wyskakującego okienka, które obejmowało cały nadrzędny obszar zawartości okna (z wyjątkiem paska tytułu), ale po prostu wyśrodkowanie okna dialogowego i rozciągnięcie jego zawartości nie działało, ponieważ okno dialogowe zawsze było nieco przesunięte od dołu.
Uwaga na temat wrażeń użytkownika: Nie jest miło nie móc przeciągać / zamykać okna nadrzędnego, gdy wyświetlane jest okno dialogowe bez obramowania, więc ponownie rozważę jego użycie. Postanowiłem również nie robić tego po opublikowaniu tej odpowiedzi, ale pozostawiam to innym do obejrzenia.
Po pewnym googlowaniu i testowaniu w końcu udało mi się to zrobić w ten sposób:
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
Jest okno, a jego właściciel jest ustawiony do głównego okna aplikacji. WindowStartupLocation
Musi być ustawionyManual
do ręcznego pozycjonowania do pracy.
Wynik:
Nie wiem, czy jest na to łatwiejszy sposób, ale wydawało mi się, że nic innego nie działa.