Browse Source

Use VisualBrush for GroupBox (#19372)

Tim Miller 4 months ago
parent
commit
77e9b29388

+ 13 - 10
src/Avalonia.Themes.Fluent/Controls/GroupBox.xaml

@@ -33,16 +33,19 @@
                     CornerRadius="{TemplateBinding CornerRadius}"
                     BorderThickness="{TemplateBinding BorderThickness}"
                     BorderBrush="{TemplateBinding BorderBrush}">
-              <Border.Clip>
-                <CombinedGeometry GeometryCombineMode="Exclude">
-                  <CombinedGeometry.Geometry1>
-                    <RectangleGeometry Rect="{Binding #RootGrid.Bounds}" />
-                  </CombinedGeometry.Geometry1>
-                  <CombinedGeometry.Geometry2>
-                    <RectangleGeometry Rect="{Binding #Header.Bounds}" />
-                  </CombinedGeometry.Geometry2>
-                </CombinedGeometry>
-              </Border.Clip>
+              <Border.OpacityMask>
+                <VisualBrush>
+                  <VisualBrush.Visual>
+                    <Canvas Background="Transparent">
+                      <Rectangle Fill="Transparent"
+                                Width="{Binding #Header.Bounds.Width}"
+                                Height="{Binding #Header.Bounds.Height}"
+                                Canvas.Left="{Binding #Header.Bounds.X}"
+                                Canvas.Top="{Binding #Header.Bounds.Y}"/>
+                    </Canvas>
+                  </VisualBrush.Visual>
+                </VisualBrush>
+              </Border.OpacityMask>
             </Border>
 
             <!-- ContentPresenter for the header -->

+ 13 - 10
src/Avalonia.Themes.Simple/Controls/GroupBox.xaml

@@ -31,16 +31,19 @@
                     CornerRadius="{TemplateBinding CornerRadius}"
                     BorderThickness="{TemplateBinding BorderThickness}"
                     BorderBrush="{TemplateBinding BorderBrush}">
-              <Border.Clip>
-                <CombinedGeometry GeometryCombineMode="Exclude">
-                  <CombinedGeometry.Geometry1>
-                    <RectangleGeometry Rect="{Binding #RootGrid.Bounds}" />
-                  </CombinedGeometry.Geometry1>
-                  <CombinedGeometry.Geometry2>
-                    <RectangleGeometry Rect="{Binding #Header.Bounds}" />
-                  </CombinedGeometry.Geometry2>
-                </CombinedGeometry>
-              </Border.Clip>
+              <Border.OpacityMask>
+                <VisualBrush>
+                  <VisualBrush.Visual>
+                    <Canvas Background="Transparent">
+                      <Rectangle Fill="Transparent"
+                                Width="{Binding #Header.Bounds.Width}"
+                                Height="{Binding #Header.Bounds.Height}"
+                                Canvas.Left="{Binding #Header.Bounds.X}"
+                                Canvas.Top="{Binding #Header.Bounds.Y}"/>
+                    </Canvas>
+                  </VisualBrush.Visual>
+                </VisualBrush>
+              </Border.OpacityMask>
             </Border>
 
             <!-- ContentPresenter for the header -->