FrameworkElement.Margin 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定 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"/>
屬性值
提供 物件的邊界值。 預設值是預設的 [粗細 ],所有屬性 (維度) 等於 0。
範例
本範例會將程式碼中的 Margin 設定為在執行時間建立 UI 元素的較大案例的一部分,然後設定各種版面配置相關屬性。 這通常會在將新元素新增至現有 XAML UI 頁面的物件樹狀結構之前完成。 在此情況下,會使用以統一值建構函式建立的新 Thickness 來設定數個 Margin 屬性。
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
備註
邊界行為和版面配置
大於 0 的邊界值會套用物件 ActualWidth 和 ActualHeight以外的空間。
邊界是版面配置中對等物件的加法;例如,兩個水準或垂直連續的物件在相鄰邊緣上設定的邊界為 30,兩者之間會有 60 圖元的空間。
如果分配的矩形空間不足以容納邊界加上物件的內容區域,則已設定邊界的物件通常不會限制指定邊界的大小。 當計算版面配置時,內容區域將會受到限制。 唯一限制邊界的情況也是內容已經限制為零。 不過,此行為最終是由解譯 Margin 的特定類型以及該物件的版面配置容器所控制。
允許邊界維度的負值,但應謹慎使用 (,並注意不同的類別配置實作可以不同方式解譯負邊界) 。 負邊界通常會以該方向裁剪物件的內容。
邊界值的非整數值是技術上允許的,但通常應該避免。
邊界和邊框間距
相關的概念是填補。 對於 物件及其周框方塊,邊界是額外空間,會在包含和轉譯 UI 元素時,配置給周框方塊外部。 填補是周框方塊內的區域,並影響元素內任何其他內容或子物件的版面配置。 FrameworkElement 不會定義填補屬性,不過,數個衍生類別會定義 Padding 屬性。 其中包括:
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding 如需邊界與填補之間關聯性的詳細資訊,請參閱 使用 XAML 對齊、邊界和填補 或 定義版面配置。