WPF-Border-Objekt Border CornerRadius verschiedenen von der Grenze Hintergrund CornerRadius
Habe ich zwei leisten übereinander. Mit einem BorderThickness aber kein hintergrund, der andere ohne Rahmen Dicke, aber mit einem hintergrund. Beide Ränder haben eine CornerRadius 3. Das problem ist, dass die Ecke der Hintergrund von einem die Grenzen auf, die Stöcke hinter der Ecke an die andere Grenze.
Hier ist das XAML mit dem ersten border-element mit dem hintergrund und der Grenze benannt FocusVisual dass die BorderThickness.
<Grid x:Name="grid">
<Border Background="{TemplateBinding Background}"
CornerRadius="3">
<Grid>
<Border x:Name="MouseOverVisual"
Opacity="0"
Background="{StaticResource NuiFieldHoverBrush}"
CornerRadius="3" />
<Border>
<Grid>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<ContentPresenter x:Name="PART_WatermarkHost"
Content="{TemplateBinding Watermark}"
ContentTemplate="{TemplateBinding WatermarkTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
IsHitTestVisible="False"
Margin="{TemplateBinding Padding}"
Visibility="Collapsed"/>
</Grid>
</Border>
</Grid>
</Border>
<Border x:Name="FocusVisual"
Opacity="0"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{StaticResource NuiFocusBrush}"
CornerRadius="3" />
</Grid>
CornerRadius eine unterschiedliche Wirkung auf den Hintergrund und die Grenze von einem Border-Objekt scheint wie ein bug in WPF.
Ich könnte hinzufügen, ein BorderThickness an der Grenze mit dem Hintergrund und legen Sie die BorderBrush die Hintergrundfarbe, aber dies bewirkt, dass die untergeordneten Elemente, die Grenze geschoben werden, in der BorderThickness. Kann ich wohl um diese Neuanordnung von Elementen, aber es ist irgendwie ein Schmerz, so dachte ich, ich würde sehen, wenn jemand hat eine bessere Lösung.
- Haben Sie versucht, entfernen Sie den Raster-element eingeschlossen innerhalb der ersten Grenze, um zu sehen, ob das einen Unterschied macht?
- Versuchen Sie es mit Peter von Blois' snoop auf snoopwpf.codeplex.com, um zu überprüfen, dass jede Grenze hat die gleiche ActualWidth und ActualHeight, dass es keine implizite Ränder oder Polsterung messing, Dinge, etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie eine Neuberechnung der
CornerRadius
Ihre innere Grenze.Angenommen, ein einfacheres Beispiel wie diese:
Die Breite und Höhe der InnerBorder ist weniger als OuterBorder von BorderThickness/2 von jeder Seite, so sollten Sie berechnen die corder-radius-in dieser Weise:
'CornerRadius der inneren Grenze' = 'CornerRadius der äußeren Grenze' - 'BorderThickness der inneren Grenze'/2.
In diesem Beispiel CornerRadius der innere Rand sollte 3.
Edit: ich denke diese SO ist eine bessere Antwort auf deine Frage.
Hinzufügen von transparentem Rand, um das dunkel grauem Rand und wird es richten mit der blauen Grenze. Stellen Sie sicher, Sie haben die gleiche Rahmenstärke.