FrameworkElement.Margin Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define a margem externa de um 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"/>
Valor da propriedade
Fornece valores de margem para o objeto . O valor padrão é uma Espessura padrão com todas as propriedades (dimensões) iguais a 0.
Exemplos
Este exemplo define Margin no código como parte de um cenário maior de criação de um elemento de interface do usuário em tempo de execução e, em seguida, definição de várias propriedades relacionadas ao layout. Isso geralmente é feito antes de adicionar um novo elemento à árvore de objetos de uma página de interface do usuário XAML existente. Nesse caso, várias propriedades margin são definidas usando uma nova Espessura criada com o construtor uniform-value.
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
Comentários
Comportamento e layout de margem
Um valor de margem maior que 0 aplica espaço fora do ActualWidth e ActualHeight do objeto.
As margens são aditivas para objetos pares em um layout; por exemplo, dois objetos adjacentes horizontal ou verticalmente com uma margem de 30 definidos na borda adjacente teriam 60 pixels de espaço entre eles.
Objetos que têm margens definidas normalmente não restringirão o tamanho da Margem especificada se o espaço de retângulo alocado não for grande o suficiente para a margem mais a área de conteúdo do objeto. A área de conteúdo será restrita quando o layout for calculado. O único caso em que as margens também seriam restritas é se o conteúdo já estiver restrito até zero. No entanto, esse comportamento é controlado, em última análise, pelo tipo específico que está interpretando Margin, bem como o contêiner de layout desse objeto.
Valores negativos para dimensões de margem são permitidos, mas devem ser usados com cuidado (e lembre-se de que margens negativas podem ser interpretadas de forma diferente por diferentes implementações de layout de classe). As margens negativas normalmente recortam o conteúdo do objeto nessa direção.
Valores não integrais para valores de margem são tecnicamente permitidos, mas normalmente devem ser evitados.
Margem e preenchimento
Um conceito relacionado é preenchimento. Para um objeto e sua caixa delimitadora, a margem é um espaço extra alocado para o lado de fora da caixa delimitadora quando o elemento de interface do usuário está contido e renderizado. O preenchimento é a área dentro da caixa delimitadora e afeta o layout de qualquer conteúdo adicional ou objetos filho dentro do elemento . FrameworkElement não define uma propriedade de preenchimento, no entanto, várias classes derivadas definem uma propriedade Padding . Estão incluídos:
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding Para obter mais informações sobre a relação entre margem e preenchimento, consulte Alinhamento, margem e preenchimento ou Definir layouts com XAML.