FrameworkElement.Margin Propriété

Définition

Obtient ou définit la marge externe d’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"/>
 

Valeur de propriété

Fournit des valeurs de marge pour l’objet . La valeur par défaut est une épaisseur par défaut avec toutes les propriétés (dimensions) égales à 0.

Exemples

Cet exemple montre comment définir Margin dans le code dans le cadre d’un scénario plus large de création d’un élément d’interface utilisateur au moment de l’exécution, puis de définition de différentes propriétés liées à la disposition. Cette opération est souvent effectuée avant d’ajouter un nouvel élément à l’arborescence d’objets d’une page d’interface utilisateur XAML existante. Dans ce cas, plusieurs propriétés margin sont définies à l’aide d’une nouvelle épaisseur créée avec le constructeur de valeur 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

Remarques

Comportement et disposition des marges

Une valeur de marge supérieure à 0 applique l’espace en dehors des valeurs ActualWidth et ActualHeight de l’objet.

Les marges sont additives pour les objets homologues dans une disposition ; par exemple, deux objets adjacents horizontalement ou verticalement avec une marge de 30 définis sur le bord adjacent auraient 60 pixels d’espace entre eux.

Les objets qui ont des marges définies ne limitent généralement pas la taille de la marge spécifiée si l’espace de rectangle alloué n’est pas suffisamment grand pour la marge plus la zone de contenu de l’objet. La zone de contenu est contrainte à la place lorsque la disposition est calculée. Le seul cas où les marges seraient également limitées est si le contenu est déjà limité à zéro. Toutefois, ce comportement est finalement contrôlé par le type spécifique qui interprète Margin, ainsi que par le conteneur de disposition de cet objet.

Les valeurs négatives pour les dimensions de marge sont autorisées, mais doivent être utilisées avec précaution (et sachez que les marges négatives peuvent être interprétées différemment selon les implémentations de disposition de classes). Les marges négatives coupent généralement le contenu de l’objet dans cette direction.

Les valeurs non intégrales pour les valeurs de marge sont techniquement autorisées, mais doivent généralement être évitées.

Marge et remplissage

Un concept connexe est le remplissage. Pour un objet et son cadre englobant, la marge est un espace supplémentaire alloué à l’extérieur du cadre englobant lorsque l’élément d’interface utilisateur est contenu et rendu. Le remplissage est la zone à l’intérieur du cadre englobant et affecte la disposition de tout contenu ou objet enfant supplémentaire à l’intérieur de l’élément. FrameworkElement ne définit pas de propriété de remplissage. Toutefois, plusieurs classes dérivées définissent une propriété Padding . Il s’agit notamment des paramètres suivants :

S’applique à

Voir aussi