FrameworkElement.Margin 속성

정의

FrameworkElement의 외부 여백을 가져오거나 설정합니다.

public:
 property Thickness Margin { Thickness get(); void set(Thickness value); };
Thickness Margin();

void Margin(Thickness value);
public Thickness Margin { get; set; }
var thickness = frameworkElement.margin;
frameworkElement.margin = thickness;
Public Property Margin As Thickness
<frameworkElement Margin="uniform"/>
- or -
<frameworkElement Margin="left+right,top+bottom"/>
- or -
<frameworkElement Margin="left,top,right,bottom"/>
 

속성 값

개체에 대한 여백 값을 제공합니다. 기본값은 모든 속성(차원)이 0과 같은 기본 두께 입니다.

예제

다음은 런타임에 UI 요소를 만든 다음 다양한 레이아웃 관련 속성을 설정하는 더 큰 시나리오의 일부로 코드의 Margin을 설정하는 예제입니다. 기존 XAML UI 페이지의 개체 트리에 새 요소를 추가하기 전에 이 작업을 수행하는 경우가 많습니다. 이 경우 Uniform-value 생성자를 사용하여 만든 새 Thickness 를 사용하여 여러 Margin 속성이 설정됩니다.

    public Page()
    {
        InitializeComponent();
        LayoutDesign();
    }

    private void LayoutDesign()
    {
        //Create Stackpanel for ListBox Control and its description
        StackPanel DeptStackPanel = new StackPanel();
        DeptStackPanel.Margin = new Thickness(10);

        LayoutRoot.Children.Add(DeptStackPanel);
        Grid.SetColumn(DeptStackPanel, 1);
        Grid.SetRow(DeptStackPanel, 1);

        TextBlock DeptListHeading = new TextBlock();
        DeptListHeading.Text = "Department";

        ListBox DeptList = new ListBox();
        DeptList.Items.Add("Finance");
        DeptList.Items.Add("Marketing");
        DeptList.Items.Add("Human Resources");
        DeptList.Items.Add("Payroll");

        DeptStackPanel.Children.Add(DeptListHeading);
        DeptStackPanel.Children.Add(DeptList);

        //Create StackPanel for buttons
        StackPanel ButtonsStackPanel = new StackPanel();
        ButtonsStackPanel.Margin = new Thickness(10);
        ButtonsStackPanel.Orientation = Orientation.Horizontal;
        ButtonsStackPanel.HorizontalAlignment = HorizontalAlignment.Center;

        LayoutRoot.Children.Add(ButtonsStackPanel);
        Grid.SetColumn(ButtonsStackPanel, 0);
        Grid.SetRow(ButtonsStackPanel, 2);
        Grid.SetColumnSpan(ButtonsStackPanel, 2);

        Button BackButton = new Button();
        BackButton.Content = "Back";
        BackButton.Width = 100;

        Button CancelButton = new Button();
        CancelButton.Content = "Cancel";
        CancelButton.Width = 100;

        Button NextButton = new Button();
        NextButton.Content = "Next";
        NextButton.Width = 100;

        ButtonsStackPanel.Children.Add(BackButton);
        ButtonsStackPanel.Children.Add(CancelButton);
        ButtonsStackPanel.Children.Add(NextButton);

        BackButton.Margin = new Thickness(10);
        CancelButton.Margin = new Thickness(10);
        NextButton.Margin = new Thickness(10);
    }
}
Partial Public Class Page
    Inherits UserControl

    Public Sub New()
        InitializeComponent()
        LayoutDesign()
    End Sub

    Private Sub LayoutDesign()
        'Create Stackpanel for ListBox Control and its description 
        Dim DeptStackPanel As New StackPanel()
        DeptStackPanel.Margin = New Thickness(10)

        LayoutRoot.Children.Add(DeptStackPanel)
        Grid.SetColumn(DeptStackPanel, 1)
        Grid.SetRow(DeptStackPanel, 1)

        Dim DeptListHeading As New TextBlock()
        DeptListHeading.Text = "Department"

        Dim DeptList As New ListBox()
        DeptList.Items.Add("Finance")
        DeptList.Items.Add("Marketing")
        DeptList.Items.Add("Human Resources")
        DeptList.Items.Add("Payroll")

        DeptStackPanel.Children.Add(DeptListHeading)
        DeptStackPanel.Children.Add(DeptList)

        'Create StackPanel for buttons 
        Dim ButtonsStackPanel As New StackPanel()
        ButtonsStackPanel.Margin = New Thickness(10)
        ButtonsStackPanel.Orientation = Orientation.Horizontal
        ButtonsStackPanel.HorizontalAlignment = HorizontalAlignment.Center

        LayoutRoot.Children.Add(ButtonsStackPanel)
        Grid.SetColumn(ButtonsStackPanel, 0)
        Grid.SetRow(ButtonsStackPanel, 2)
        Grid.SetColumnSpan(ButtonsStackPanel, 2)

        Dim BackButton As New Button()
        BackButton.Content = "Back"
        BackButton.Height = 30
        BackButton.Width = 100

        Dim CancelButton As New Button()
        CancelButton.Content = "Cancel"
        CancelButton.Height = 30
        CancelButton.Width = 100

        Dim NextButton As New Button()
        NextButton.Content = "Next"
        NextButton.Height = 30
        NextButton.Width = 100

        ButtonsStackPanel.Children.Add(BackButton)
        ButtonsStackPanel.Children.Add(CancelButton)
        ButtonsStackPanel.Children.Add(NextButton)

        BackButton.Margin = New Thickness(10)
        CancelButton.Margin = New Thickness(10)
        NextButton.Margin = New Thickness(10)
    End Sub
End Class

설명

여백 동작 및 레이아웃

0보다 큰 여백 값은 개체의 ActualWidthActualHeight 외부 공간을 적용합니다.

레이아웃의 피어 개체에 대한 여백은 가산적입니다. 예를 들어 인접한 가장자리에서 여백이 30으로 설정된 두 개의 가로 또는 세로 인접 개체는 둘 사이에 60픽셀의 공간이 있습니다.

여백이 설정된 개체는 할당된 사각형 공간이 여백과 개체의 콘텐츠 영역에 충분히 크지 않은 경우 일반적으로 지정된 Margin의 크기를 제한하지 않습니다. 레이아웃을 계산할 때 콘텐츠 영역이 대신 제한됩니다. 여백이 제한되는 유일한 경우는 콘텐츠가 이미 0으로 제한된 경우입니다. 그러나 이 동작은 궁극적으로 Margin을 해석하는 특정 형식과 해당 개체의 레이아웃 컨테이너에 의해 제어됩니다.

여백 차원에 대한 음수 값은 허용되지만 주의해서 사용해야 합니다(음수 여백은 다른 클래스 레이아웃 구현에 의해 다르게 해석될 수 있습니다). 음수 여백은 일반적으로 개체의 내용을 해당 방향으로 클리핑합니다.

여백 값에 대한 정수 값이 아닌 값은 기술적으로 허용되지만 일반적으로 피해야 합니다.

여백 및 안쪽 여백

관련 개념은 패딩입니다. 개체 및 경계 상자의 경우 여백은 UI 요소가 포함되고 렌더링될 때 경계 상자 외부에 할당되는 추가 공간입니다. 안쪽 여백은 경계 상자 내의 영역이며 요소 내의 추가 콘텐츠 또는 자식 개체의 레이아웃에 영향을 줍니다. FrameworkElement 는 안쪽 여백 속성을 정의하지 않지만 여러 파생 클래스는 Padding 속성을 정의합니다. 여기에는 다음이 포함됩니다.

적용 대상

추가 정보