Странное поведение заполнения - PullRequest
0 голосов
/ 08 ноября 2010

В моем приложении попробуйте расположить 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 Ответ

1 голос
/ 08 ноября 2010

Я не знаю, откуда у вас эти 80, потому что их нет в вашем XAML, но я предполагаю, что это размер внешнего UserControl.В своем расчете вы пропустили одну часть: саму границу.Для BorderThickness установлено значение 1, что означает, что на каждой стороне имеется граница в 1 единицу, удерживаемая за граничную линию, но не отображаемая, поскольку не установлен BorderBrush.Таким образом, фактический размер составляет 80 - (8 * 2) - (1 * 2) = 62

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...