FrameworkElement.Margin Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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:
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding Weitere Informationen zur Beziehung zwischen Rand und Auffüllung finden Sie unter Ausrichtung, Rand und Auffüllung oder Definieren von Layouts mit XAML.