FrameworkElement.Margin 속성

2013-12-13

FrameworkElement의 바깥쪽 여백을 가져오거나 설정합니다.

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)
XMLNS for XAML: xmlns에 매핑되지 않습니다.

public Thickness Margin { get; set; }
<frameworkElement Margin="uniform"/>
- or -
<frameworkElement Margin="left+right,top+bottom"/>
- or -
<frameworkElement Margin="left,top,right,bottom"/>

XAML 값

uniform

균일한 Thickness를 지정하는 값(논리 픽셀 단위)입니다. uniform 값은 네 개의 Thickness 속성(Left, Top, Right, Bottom) 모두에 적용됩니다.

left+right

대칭 ThicknessLeftRight를 지정하는 값(논리 픽셀 단위)입니다.

top+bottom

대칭 ThicknessTopBottom를 지정하는 값(논리 픽셀 단위)입니다.

left top right bottom

Thickness 구조체에 가능한 네 개의 차원 속성(Left, Top, Right, Bottom)을 지정하는 값(논리 픽셀 단위)입니다.

  • 앞에 표시된 XAML 구문에서는 값 사이의 구분 기호로 쉼표 대신 공백을 사용할 수도 있습니다.

  • Margin의 코드와 XAML 사용에 영향을 주는 값 형식, 값 범위 및 가장자리 고려 사항에 대해서는 설명 부분을 참조하세요.

속성 값

형식: System.Windows.Thickness
개체의 여백 값을 제공합니다. 기본값은 모든 속성(크기)이 0인 Thickness입니다.

종속성 속성 식별자 필드: MarginProperty

여백은 레이아웃에서 UI를 만들 때 인접하는 다른 개체와 이 개체 간의 공간입니다. 레이아웃에 참여하는 다른 개체는 피어 개체(예: 공통 부모 컨트롤의 컬렉션에 있는 다른 개체)이거나 표시 트리에서 개체의 부모일 수 있습니다.

Margin을 균일한 값이 아닌 개별 Thickness 값으로 설정하여 개체의 여백을 비대칭으로 설정할 수 있습니다. Thickness 구조체 자체는 문자열 형식 변환을 지원하므로 XAML 특성 구문에서 비대칭 Margin을 지정할 수 있습니다. 예를 들어 XAML에서 여백이 Margin="15,10,0,10"으로 지정된 개체는 왼쪽 여백이 15 논리 픽셀, 위쪽 여백이 10 논리 픽셀, 오른쪽 여백이 0 논리 픽셀, 아래쪽 여백이 10 논리 픽셀입니다.


<Grid x:Name="LayoutRoot" Background="Coral" Width="350" Height="135" ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Grid.Row="0" Text="First Name" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <TextBlock Grid.Column="0" Grid.Row="1" Text="Last Name" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <TextBox Grid.Column="1" Grid.Row="0" Margin="15,10,15,10" />
    <TextBox Grid.Column="1" Grid.Row="1" Margin="15,10,15,10" />

</Grid>


다음 그림에서는 Margin 속성의 설정 효과를 보여 줍니다.

margin and alignment diagram

여백 기능 및 레이아웃

0보다 큰 여백 값은 레이아웃의 ActualWidthActualHeight 바깥쪽에 공간을 만듭니다.

여백은 레이아웃의 피어 개체에 대해 합해집니다. 예를 들어 서로 인접하는 가장자리의 여백이 모두 30으로 설정된 가로나 세로로 인접하는 두 개의 개체 사이에는 60 논리 픽셀의 공간이 있습니다.

일반적으로 여백이 설정되어 있는 개체는 할당되어 있는 사각형 공간이 여백과 개체 콘텐츠 영역을 합한 부분보다 작으면 지정된 Margin의 크기를 제한하지 않습니다. 대신 레이아웃을 계산할 때 콘텐츠 영역에 제한이 적용됩니다. 여백에도 제한이 적용되는 경우는 내용에 이미 0까지 제한이 적용되어 있는 경우뿐입니다. 그러나 이 동작은 최종적으로 Margin을 해석하는 특정 형식 및 해당 개체의 레이아웃 컨테이너에서 제어합니다.

여백 크기로 음수 값을 사용할 수는 있지만 주의하여 사용해야 하며, 사용할 경우 서로 다른 클래스 레이아웃 구현에서 음수 여백이 다르게 해석될 수 있습니다. 여백 값으로 음수를 지정하면 일반적으로 해당 방향에서 개체의 콘텐츠가 잘립니다.

여백 값에 정수가 아닌 값을 사용하는 것은 기술적으로는 가능하지만 사용하지 않는 것이 좋으며, 사용할 경우 기본 레이아웃 반올림 동작에 따라 반올림됩니다.

여백 크기로 정해진 상한은 없으며, 바람직한 경우는 아니지만 개체 콘텐츠가 Windows Phone 콘텐츠 영역 바깥쪽에 놓이도록 여백을 설정하여 개체의 콘텐츠가 표시되지 않도록 할 수도 있습니다.

여백 및 안쪽 여백

관련 개념은 패딩입니다. 개체 및 경계 상자의 경우 여백은 UI 요소가 포함되어 있고 렌더링할 때 경계 상자의 바깥쪽에 할당되는 추가 공간입니다. 안쪽 여백은 경계 상자 안의 영역이며 요소 내의 추가 콘텐츠 또는 자식 개체의 레이아웃에 영향을 줍니다. FrameworkElement는 아직 콘텐츠 모델을 정의하지 않으므로 안쪽 여백의 속성은 대신 콘텐츠 모델을 정의하는 하위 클래스에 의해 정의됩니다. 이러한 속성 중 가장 널리 사용되는 속성은 TextBlock.Padding입니다. 다른 속성에는 TextBlock.PaddingBorder.Padding이 있습니다. 여백과 안쪽 여백 간의 관계에 대한 자세한 내용은 Windows Phone의 레이아웃을 참조하세요.

여백에 애니메이션 효과 적용

Windows Phone에는 ThicknessAnimation 형식이 없기 때문에 Windows Phone에서는 여백에 대한 직접 애니메이션을 지원하지 않습니다. BorderThicknessThickness 형식을 사용하므로 Border에도 같은 문제가 있습니다. 한 가지 해결 방법은 투명 패널에서 요소를 래핑하고 패널의 관련 Double 속성에 애니메이션 효과를 주는 것입니다.

다음 예제는 XAML에서 다양한 요소의 여백을 설정합니다.


<Canvas>
    <Rectangle Height="500" Width="480" Margin="0,0,0,0" Stroke="Gray" />
    <InkPresenter x:Name="MyIP" Height="500" Width="480" Background="Transparent" Margin="0,0,0,0"
                  MouseLeftButtonDown="MyIP_MouseLeftButtonDown"
                  MouseMove="MyIP_MouseMove"
                  LostMouseCapture="MyIP_LostMouseCapture"/>
    <Button x:Name="BtPen" Content="Pen" Margin="0,500,0,0" Height="72" Width="100" Click="BtPen_Click" />
    <Button x:Name="BtMarker" Content="Marker" Margin="85,500,0,0" Height="72" Width="140" Click="BtMarker_Click" />
    <Button x:Name="BtHighlighter" Content="Highlight" Margin="210,500,0,0" Height="72" Width="170" Click="BtHighlighter_Click" />
    <Button x:Name="BtEraser" Content="Erase" Margin="365,500,0,0" Height="72" Width="110" Click="BtEraser_Click" />
</Canvas>


다음 예제에서는 새 Thickness 인라인을 만들어 코드에서 Margin을 설정하는 방법을 보여 줍니다. 이것은 코드에서 Margin을 설정해야 하는 컨텍스트에서 표시됩니다. 예를 들어 XAML 대신 코드를 사용하여 Margin이 설정되는 전체 UI 요소를 만드는 경우가 있습니다.


Button button1 = new Button();
button1.Width = 300;
button1.Height = 80;
StackPanel panel1 = new StackPanel();
panel1.Orientation = System.Windows.Controls.Orientation.Horizontal;
Rectangle rect1 = new Rectangle();
rect1.Width = 200;
rect1.Fill = new SolidColorBrush(Colors.Green);
TextBlock tb3 = new TextBlock();
tb3.Margin = new Thickness(2);
tb3.Text = "Green";
tb3.TextAlignment = TextAlignment.Center;
panel1.Children.Add(tb3);
panel1.Children.Add(rect1);
button1.Content = panel1;
LayoutRoot.Children.Add(button1);


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft