FrameworkElement.Margin Eigenschaft

Definition

Ruft den äußeren Rand eines FrameworkElements ab oder legt diese fest.

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"/>
 

Eigenschaftswert

Stellt Randwerte für das -Objekt bereit. Der Standardwert ist eine Standarddicke mit allen Eigenschaften (Dimensionen) gleich 0.

Beispiele

In diesem Beispiel wird Margin im Code als Teil eines größeren Szenarios festgelegt, in dem ein UI-Element zur Laufzeit erstellt und dann verschiedene layoutbezogene Eigenschaften festgelegt werden. Dies geschieht häufig vor dem Hinzufügen eines neuen Elements zur Objektstruktur einer vorhandenen XAML-Ui-Seite. In diesem Fall werden mehrere Margin-Eigenschaften mithilfe einer neuen Stärke festgelegt, die mit dem Konstruktor für einheitliche Werte erstellt wurde.

    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

Hinweise

Randverhalten und Layout

Ein Marginwert größer als 0 wendet Speicherplatz außerhalb der ActualWidth - und ActualHeight-Objekte des Objekts an.

Ränder sind additiv für Peerobjekte in einem Layout. Beispielsweise würden zwei horizontal oder vertikal angrenzende Objekte mit einem Rand von 30, der an der angrenzenden Kante festgelegt ist, 60 Pixel Abstand zwischen ihnen haben.

Objekte, für die Ränder festgelegt sind, schränken in der Regel die Größe des angegebenen Rands nicht ein, wenn der zugewiesene Rechteckraum nicht groß genug für den Rand und den Inhaltsbereich des Objekts ist. Der Inhaltsbereich wird stattdessen eingeschränkt, wenn das Layout berechnet wird. Der einzige Fall, in dem die Ränder ebenfalls eingeschränkt wären, ist, wenn der Inhalt bereits bis auf 0 0 beschränkt ist. Dieses Verhalten wird jedoch letztendlich durch den spezifischen Typ gesteuert, der Margin interpretiert, sowie durch den Layoutcontainer dieses Objekts.

Negative Werte für Randdimensionen sind zulässig, sollten aber mit Vorsicht verwendet werden (und beachten Sie, dass negative Ränder von verschiedenen Klassenlayoutimplementierungen unterschiedlich interpretiert werden können). Negative Ränder schneiden den Inhalt des Objekts normalerweise in diese Richtung ab.

Nicht integrale Werte für Marginwerte sind technisch zulässig, sollten aber in der Regel vermieden werden.

Ränder und Abstände

Ein verwandtes Konzept ist das Auffüllen. Bei einem Objekt und dessen Begrenzungsrahmen ist der Rand zusätzlicher Speicherplatz, der außerhalb des Begrenzungsrahmens zugewiesen wird, wenn das UI-Element enthalten und gerendert wird. Padding ist der Bereich innerhalb des Begrenzungsrahmens und wirkt sich auf das Layout von zusätzlichen Inhalten oder untergeordneten Objekten innerhalb des Elements aus. FrameworkElement definiert keine Padding-Eigenschaft. Mehrere abgeleitete Klassen definieren jedoch eine Padding-Eigenschaft . Dazu zählen unter anderem folgende Einstellungen:

Gilt für:

Weitere Informationen