2010-11-08 302 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