FrameworkElement.Margin Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il margine esterno di 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"/>
Valore della proprietà
Fornisce i valori dei margini per l'oggetto . Il valore predefinito è spessore predefinito con tutte le proprietà (dimensioni) uguali a 0.
Esempio
Questo esempio imposta Margin nel codice come parte di uno scenario più ampio per la creazione di un elemento dell'interfaccia utente in fase di esecuzione e quindi l'impostazione di varie proprietà correlate al layout. Questa operazione viene spesso eseguita prima di aggiungere un nuovo elemento all'albero degli oggetti di una pagina dell'interfaccia utente XAML esistente. In questo caso, diverse proprietà Margin vengono impostate usando un nuovo spessore creato con il costruttore uniform-value.
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
Commenti
Comportamento e layout dei margini
Un valore del margine maggiore di 0 applica spazio all'esterno dell'oggetto ActualWidth e ActualHeight.
I margini sono additivi per gli oggetti peer in un layout; Ad esempio, due oggetti orizzontalmente o verticalmente adiacenti con un margine di 30 impostato sul bordo adiacente avrebbero 60 pixel di spazio tra di essi.
Gli oggetti con set di margini non vincolano in genere le dimensioni del margine specificato se lo spazio del rettangolo assegnato non è sufficientemente grande per il margine più l'area di contenuto dell'oggetto. L'area di contenuto verrà invece vincolata quando viene calcolato il layout. L'unico caso in cui i margini sarebbero vincolati è anche se il contenuto è già vincolato fino a zero. Tuttavia, questo comportamento viene controllato in definitiva dal tipo specifico che interpreta Margin, nonché dal contenitore di layout di tale oggetto.
I valori negativi per le dimensioni del margine sono consentiti, ma devono essere usati con cautela (e tenere presente che i margini negativi possono essere interpretati in modo diverso da diverse implementazioni di layout di classe). I margini negativi ritagliano in genere il contenuto dell'oggetto in tale direzione.
I valori non integrali per i valori di margine sono tecnicamente consentiti, ma in genere devono essere evitati.
Margine e spaziatura interna
Un concetto correlato è la spaziatura interna. Per un oggetto e il relativo rettangolo di selezione, il margine è uno spazio aggiuntivo allocato all'esterno del rettangolo di selezione quando l'elemento dell'interfaccia utente è contenuto e sottoposto a rendering. La spaziatura interna è l'area all'interno del rettangolo di selezione e influisce sul layout di qualsiasi contenuto aggiuntivo o oggetti figlio all'interno dell'elemento. FrameworkElement non definisce una proprietà di riempimento, ma diverse classi derivate definiscono una proprietà Padding . Queste includono:
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding Per altre info sulla relazione tra margine e spaziatura interna, vedi Allineamento, margine e spaziatura interna o Definire layout con XAML.