FrameworkElement.Margin Propiedad

Definición

Obtiene o establece el margen externo de un 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 de propiedad

Proporciona valores de margen para el objeto . El valor predeterminado es un grosor predeterminado con todas las propiedades (dimensiones) igual a 0.

Ejemplos

En este ejemplo se establece Margin en el código como parte de un escenario mayor de creación de un elemento de interfaz de usuario en tiempo de ejecución y, a continuación, se establecen varias propiedades relacionadas con el diseño. Esto suele hacerse antes de agregar un nuevo elemento al árbol de objetos de una página de interfaz de usuario XAML existente. En este caso, se establecen varias propiedades margin mediante un nuevo grosor creado con el constructor de valor uniforme.

    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

Comentarios

Comportamiento y diseño del margen

Un valor de margen mayor que 0 aplica espacio fuera de ActualWidth y ActualHeight del objeto.

Los márgenes son aditivos para los objetos del mismo nivel en un diseño; por ejemplo, dos objetos adyacentes horizontal o verticalmente con un margen de 30 establecido en el borde adyacente tendría 60 píxeles de espacio entre ellos.

Los objetos que tienen márgenes establecidos no suelen restringir el tamaño del margen especificado si el espacio de rectángulo asignado no es lo suficientemente grande para el margen más el área de contenido del objeto. El área de contenido se restringirá en su lugar cuando se calcule el diseño. El único caso en el que los márgenes se restringirían también es si el contenido ya está restringido hasta cero. Sin embargo, este comportamiento se controla en última instancia mediante el tipo específico que interpreta Margin, así como el contenedor de diseño de ese objeto.

Se permiten valores negativos para las dimensiones de margen, pero deben usarse con precaución (y tenga en cuenta que los márgenes negativos se pueden interpretar de forma diferente según las implementaciones de diseño de clase). Los márgenes negativos suelen recortar el contenido del objeto en esa dirección.

Los valores no enteros para los valores de margen se permiten técnicamente, pero normalmente deben evitarse.

Margen y relleno

Un concepto relacionado es relleno. Para un objeto y su cuadro de límite, el margen es espacio adicional que se asigna al exterior del cuadro de límite cuando el elemento de la interfaz de usuario está contenido y representado. El relleno es el área dentro del rectángulo delimitador y afecta al diseño de cualquier contenido adicional o objetos secundarios dentro del elemento. FrameworkElement no define una propiedad de relleno; sin embargo, varias clases derivadas definen una propiedad Padding . Se incluyen los siguientes:

Se aplica a

Consulte también