diff --git a/Changelog.md b/Changelog.md
index b4a31db..560f7ef 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -10,7 +10,7 @@
- Hauptlayout von festen `Window.ActualWidth`-Bindings entkoppelt, damit Header/Content nicht über die gerundete Innenfläche hinausragen.
- Feste Hauptlayout-Höhen (Navigation/Content) auf die verfügbare Innenhöhe abgestimmt und Clipping im Dock-Bereich aktiviert, damit keine Inhalte in die Rundungsbereiche überlaufen.
- Initialisierung des Rounded-Clips auf den finalen Layout-Zeitpunkt erweitert (Loaded/Render), damit die Rundungsbegrenzung stabil greift.
-- MainWindow-Ecküberstände beseitigt: Navigation-Rail unten links an den Fensterradius angepasst, Content-Bereich im `DockPanel` als Fill-Element geführt und zusätzlicher Surface-Clip auf Radius `20` gesetzt.
+- MainWindow-Ecküberstände beseitigt: Navigation-Rail unten links an den Fensterradius angepasst, Content-Bereich im `DockPanel` als Fill-Element geführt, zusätzlicher Surface-Clip auf Radius `20` gesetzt und Body-Host per Geometrie mit gerundeten unteren Ecken begrenzt.
- Sichtbarkeit des Main-Contents wiederhergestellt: Navigations-/Content-Host auf feste Breitenaufteilung (`75 + 425`) umgestellt, damit das Inhaltspanel nicht mehr durch einen Zero-Width-Viewport abgeschnitten wird.
### Navigation und Interaktion
diff --git a/MainWindow.xaml b/MainWindow.xaml
index 5035ea0..a468e0f 100644
--- a/MainWindow.xaml
+++ b/MainWindow.xaml
@@ -492,13 +492,17 @@
-
-
+
0d && btnSP.ActualHeight > 0d)
+ {
+ btnSP.Clip = CreateBottomRoundedRectGeometry(btnSP.ActualWidth, btnSP.ActualHeight, surfaceRadius);
+ }
+
_mainSurfaceClipInitialized = true;
}
+ private static Geometry CreateBottomRoundedRectGeometry(double width, double height, double radius)
+ {
+ if (width <= 0d || height <= 0d)
+ return Geometry.Empty;
+
+ double r = Math.Max(0d, Math.Min(radius, Math.Min(width / 2d, height / 2d)));
+ if (r <= 0d)
+ return new RectangleGeometry(new Rect(0d, 0d, width, height));
+
+ var geometry = new StreamGeometry();
+ using (var context = geometry.Open())
+ {
+ context.BeginFigure(new Point(0d, 0d), true, true);
+ context.LineTo(new Point(width, 0d), true, false);
+ context.LineTo(new Point(width, height - r), true, false);
+ context.ArcTo(new Point(width - r, height), new Size(r, r), 0d, false, SweepDirection.Clockwise, true, false);
+ context.LineTo(new Point(r, height), true, false);
+ context.ArcTo(new Point(0d, height - r), new Size(r, r), 0d, false, SweepDirection.Clockwise, true, false);
+ context.LineTo(new Point(0d, 0d), true, false);
+ }
+
+ geometry.Freeze();
+ return geometry;
+ }
+
}
public class cMainFunctionInfo