FrameworkElement.Margin Proprietà

Definizione

Ottiene o imposta il margine esterno di un FrameworkElement.

C#
public Thickness Margin { get; set; }
XAML
<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.

C#
    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);
    }
}

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

Prodotto Versioni
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

Vedi anche