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.
Примеры
Этот пример задает Margin в коде как часть более крупного сценария создания элемента пользовательского интерфейса во время выполнения, а затем задания различных свойств, связанных с макетом. Это часто делается перед добавлением нового элемента в дерево объектов существующей страницы пользовательского интерфейса XAML. В этом случае несколько свойств 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, а также контейнером макета этого объекта.
Отрицательные значения для измерений полей разрешены, но их следует использовать с осторожностью (и помните, что отрицательные поля могут интерпретироваться по-разному в разных реализациях макета класса). Отрицательные поля обычно обрезают содержимое объекта в этом направлении.
Нецелевых значений для значений полей технически разрешено, но обычно их следует избегать.
Поля и заполнение
Связанная концепция — заполнение. Для объекта и его ограничивающего прямоугольника поле — это дополнительное пространство, которое выделяется за пределами ограничивающего прямоугольника, когда элемент пользовательского интерфейса содержится и отрисовывается. Заполнение — это область внутри ограничивающего прямоугольника, влияющая на макет любого дополнительного содержимого или дочерних объектов внутри элемента. FrameworkElement не определяет свойство заполнения, однако несколько производных классов определяют свойство Padding . К ним относятся следующие объекты.
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding Дополнительные сведения о связи между полями и заполнением см. в разделах Выравнивание, поля и заполнение или Определение макетов с помощью XAML.