FrameworkElement.Margin Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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:
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding Para obtener más información sobre la relación entre el margen y el relleno, consulta Alineación, margen y relleno o Definir diseños con XAML.