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 Code als Teil eines größeren Szenarios festgelegt, in dem zur Laufzeit ein Benutzeroberflächenelement erstellt und dann verschiedene layoutbezogene Eigenschaften festgelegt werden. Dies erfolgt 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 Uniform-Value-Konstruktor 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);
    }
}

Hinweise

Verhalten und Layout des Rands

Ein Randwert, der größer als 0 ist, wendet Platz außerhalb der ActualWidth - und ActualHeight-Werte des Objekts an.

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

Objekte, deren 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 plus 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 0 (null) eingeschrä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 Randabmessungen 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 Seitenränder schneiden den Inhalt des Objekts in dieser Richtung ab.

Nicht integrale Werte für Randwerte 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 Platz, der der Außenseite des Begrenzungsrahmens zugeordnet wird, wenn das UI-Element enthalten und gerendert wird. Die Auffüllung 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:

Weitere Informationen zur Beziehung zwischen Rand und Abstand finden Sie unter Ausrichtung, Rand und Abstand oder Definieren von Layouts mit XAML.

Gilt für:

Weitere Informationen