FrameworkElement.Margin Properti

Definisi

Mendapatkan atau mengatur margin luar 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"/>
 

Nilai Properti

Menyediakan nilai margin untuk objek. Nilai default adalah Ketebalan default dengan semua properti (dimensi) sama dengan 0.

Contoh

Contoh ini menetapkan Margin dalam kode sebagai bagian dari skenario yang lebih besar untuk membuat elemen UI pada durasi, lalu mengatur berbagai properti terkait tata letak. Ini sering dilakukan sebelum menambahkan elemen baru ke pohon objek halaman UI XAML yang ada. Dalam hal ini beberapa properti Margin diatur menggunakan Ketebalan baru yang dibuat dengan konstruktor nilai seragam.

    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

Keterangan

Perilaku dan tata letak margin

Nilai margin yang lebih besar dari 0 menerapkan ruang di luar actualWidth dan ActualHeight objek.

Margin bersifat aditif untuk objek serekan dalam tata letak; misalnya, dua objek yang berdampingan secara horizontal atau vertikal keduanya dengan margin 30 yang diatur pada tepi yang berdampingan akan memiliki ruang 60 piksel di antaranya.

Objek yang memiliki margin yang diatur biasanya tidak akan membatasi ukuran Margin yang ditentukan jika ruang persegi panjang yang dialokasikan tidak cukup besar untuk margin ditambah area konten objek. Area konten akan dibatasi sebagai gantinya ketika tata letak dihitung. Satu-satunya kasus di mana margin akan dibatasi juga adalah jika konten sudah dibatasi hingga nol. Namun, perilaku ini pada akhirnya dikendalikan oleh jenis tertentu yang menginterpretasikan Margin, serta kontainer tata letak objek tersebut.

Nilai negatif untuk dimensi margin diizinkan, tetapi harus digunakan dengan hati-hati (dan menyadari bahwa margin negatif dapat ditafsirkan secara berbeda oleh implementasi tata letak kelas yang berbeda). Margin negatif biasanya mengklip konten objek ke arah tersebut.

Nilai non-integral untuk nilai margin secara teknis diizinkan, tetapi biasanya harus dihindari.

Margin dan Padding

Konsep terkait adalah padding. Untuk objek dan kotak pembatasnya, margin adalah ruang ekstra yang dialokasikan ke bagian luar kotak pembatas saat elemen UI dimuat dan dirender. Padding adalah area di dalam kotak pembatas, dan memengaruhi tata letak konten atau objek turunan tambahan di dalam elemen . FrameworkElement tidak menentukan properti padding, Namun, beberapa kelas turunan menentukan properti Padding . Ini termasuk:

Berlaku untuk

Lihat juga