2010-11-08 250 views
0

在我的应用程序中,尝试在一个大的方块中放置8个小方块。见下图。奇怪的填充行为

alt text

<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乘62平方?

回答

1

我不知道你从哪里得到80,因为它不在你的XAML中的任何地方,但我认为这应该是外部UserControl的大小。在你的计算中,你错过了一个部分:边界本身。 BorderThickness设置为1,这意味着在边界线的所有边上都有一个单位区域,但由于没有设置BorderBrush而没有显示。所以实际尺寸是80 - (8 * 2) - (1 * 2)= 62

+0

对!但我认为边界是在内部呈现的,不是吗?所以,如果我有宽度和高度50和5边界的用户控件,它将是60乘60? – Vitalij 2010-11-08 13:46:03

+1

边框是其子内容的外部容器,因此它首先占用所有需要的空间。由于红色正方形是边框内的矩形,其大小由所有<边框容器大小(网格)> - <边框边距> - <边框厚度> - <边框填充> - <矩形边距> – 2010-11-08 13:51:48