FrameworkElement.Margin 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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보다 큰 여백 값은 개체의 ActualWidth 및 ActualHeight 외부 공간을 적용합니다.
레이아웃의 피어 개체에 대한 여백은 가산적입니다. 예를 들어 인접한 가장자리에서 여백이 30으로 설정된 두 개의 가로 또는 세로 인접 개체는 둘 사이에 60픽셀의 공간이 있습니다.
여백이 설정된 개체는 할당된 사각형 공간이 여백과 개체의 콘텐츠 영역에 충분히 크지 않은 경우 일반적으로 지정된 Margin의 크기를 제한하지 않습니다. 레이아웃을 계산할 때 콘텐츠 영역이 대신 제한됩니다. 여백이 제한되는 유일한 경우는 콘텐츠가 이미 0으로 제한된 경우입니다. 그러나 이 동작은 궁극적으로 Margin을 해석하는 특정 형식과 해당 개체의 레이아웃 컨테이너에 의해 제어됩니다.
여백 차원에 대한 음수 값은 허용되지만 주의해서 사용해야 합니다(음수 여백은 다른 클래스 레이아웃 구현에 의해 다르게 해석될 수 있습니다). 음수 여백은 일반적으로 개체의 내용을 해당 방향으로 클리핑합니다.
여백 값에 대한 정수 값이 아닌 값은 기술적으로 허용되지만 일반적으로 피해야 합니다.
여백 및 안쪽 여백
관련 개념은 패딩입니다. 개체 및 경계 상자의 경우 여백은 UI 요소가 포함되고 렌더링될 때 경계 상자 외부에 할당되는 추가 공간입니다. 안쪽 여백은 경계 상자 내의 영역이며 요소 내의 추가 콘텐츠 또는 자식 개체의 레이아웃에 영향을 줍니다. FrameworkElement 는 안쪽 여백 속성을 정의하지 않지만 여러 파생 클래스는 Padding 속성을 정의합니다. 여기에는 다음이 포함됩니다.
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding 여백과 안쪽 여백 간의 관계에 대한 자세한 내용은 맞춤, 여백 및 안쪽 여백 또는 XAML을 사용하여 레이아웃 정의를 참조하세요.