FrameworkElement.Margin Proprietà

Definizione

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:

Si applica a

Vedi anche