奇怪的填充行为
在我的应用程序中,尝试将 8 个小方块放置在一个大方块周围。见下图。
<UserControl
<UserControl.Resources>
<Style x:Key="ResizerStyle" TargetType="UserControl">
<Setter Property="Width" Value="{Binding Padding.Top, ElementName=border, Mode=Default}"/>
<Setter Property="Height" Value="{Binding Padding.Top, ElementName=border, Mode=Default}"/>
</Style>
<Thickness x:Key="ScalersSize">8</Thickness>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<Border x:Name="border" BorderThickness="1" Panel.ZIndex="-1000" Padding="{DynamicResource ScalersSize}" Background="#00000000">
<Rectangle Fill="#FFC00000"/>
</Border>
<local:Scaler VerticalAlignment="Top" Cursor="SizeNS" HorizontalAlignment="Center" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Top" Cursor="SizeNESW" HorizontalAlignment="Right" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Top" HorizontalAlignment="Left" Cursor="SizeNWSE" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNS" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNWSE" Style="{StaticResource ResizerStyle}" HorizontalAlignment="Right"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNESW" Style="{StaticResource ResizerStyle}" HorizontalAlignment="Left"/>
<local:Scaler HorizontalAlignment="Right" VerticalAlignment="Center" Cursor="SizeWE" Style="{StaticResource ResizerStyle}"/>
<local:Scaler HorizontalAlignment="Left" VerticalAlignment="Center" Cursor="SizeWE" Style="{StaticResource ResizerStyle}"/>
</Grid>
</UserControl>
以下呈现红色 62x62 正方形。但据我所知 80 - 8 * 2 = 64。那么为什么它被渲染为 62 x 62 平方呢?
In my application a try to position 8 small squares around one big one. See image below.
<UserControl
<UserControl.Resources>
<Style x:Key="ResizerStyle" TargetType="UserControl">
<Setter Property="Width" Value="{Binding Padding.Top, ElementName=border, Mode=Default}"/>
<Setter Property="Height" Value="{Binding Padding.Top, ElementName=border, Mode=Default}"/>
</Style>
<Thickness x:Key="ScalersSize">8</Thickness>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<Border x:Name="border" BorderThickness="1" Panel.ZIndex="-1000" Padding="{DynamicResource ScalersSize}" Background="#00000000">
<Rectangle Fill="#FFC00000"/>
</Border>
<local:Scaler VerticalAlignment="Top" Cursor="SizeNS" HorizontalAlignment="Center" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Top" Cursor="SizeNESW" HorizontalAlignment="Right" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Top" HorizontalAlignment="Left" Cursor="SizeNWSE" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNS" Style="{StaticResource ResizerStyle}"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNWSE" Style="{StaticResource ResizerStyle}" HorizontalAlignment="Right"/>
<local:Scaler VerticalAlignment="Bottom" Cursor="SizeNESW" Style="{StaticResource ResizerStyle}" HorizontalAlignment="Left"/>
<local:Scaler HorizontalAlignment="Right" VerticalAlignment="Center" Cursor="SizeWE" Style="{StaticResource ResizerStyle}"/>
<local:Scaler HorizontalAlignment="Left" VerticalAlignment="Center" Cursor="SizeWE" Style="{StaticResource ResizerStyle}"/>
</Grid>
</UserControl>
And the following renders red 62x62 square. But as far as I know 80 - 8 * 2 = 64. So why it is rendered it as 62 by 62 square?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道您从哪里获得 80,因为它不在 XAML 中的任何位置,但我认为这应该是外部 UserControl 的大小。在你的计算中你错过了一个部分:边界本身。您将 BorderThickness 设置为 1,这意味着边界线的所有边上都有 1 个单位的区域,但由于没有设置 BorderBrush,因此未显示。所以实际大小为 80 - (8 * 2) - (1 * 2) = 62
I don't know where you're getting the 80 from since it's not anywhere in your XAML but I assume that's supposed to be the size of the outer UserControl. In your calculation you missed one part: the border itself. You have the BorderThickness set to 1 which means there is a 1 unit area on all sides being held for the border line but not being shown because there isn't a BorderBrush set. So the actual size is 80 - (8 * 2) - (1 * 2) = 62