FrameworkElement.Margin Propriedade

Definição

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:

Aplica-se a

Confira também