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 に等しい既定の 太さ です。
例
次の使用例は、実行時に UI 要素を作成し、さまざまなレイアウト関連のプロパティを設定する大規模なシナリオの一環として、コード内の Margin を設定します。 これは多くの場合、既存の 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 に設定されている水平方向または垂直方向に隣接する 2 つのオブジェクトの間に 60 ピクセルのスペースが設定されます。
余白が設定されているオブジェクトは、通常、割り当てられた四角形のスペースが余白とオブジェクトのコンテンツ領域に十分な大きさでない場合、指定された Margin のサイズを制限しません。 レイアウトの計算時に、コンテンツ領域が代わりに制約されます。 余白が制約される唯一のケースは、コンテンツが既にゼロに制限されている場合です。 ただし、この動作は最終的には、Margin を解釈する特定の型と、そのオブジェクトのレイアウト コンテナーによって制御されます。
余白ディメンションの負の値は許可されますが、慎重に使用する必要があります (また、クラス レイアウトの実装によって負の余白の解釈が異なる場合があることに注意してください)。 負の余白は、通常、オブジェクトの内容をその方向にクリップします。
マージン値の非整数値は技術的に許可されますが、通常は避ける必要があります。
余白とスペース
関連する概念はパディングです。 オブジェクトとその境界ボックスの場合、余白は、UI 要素が含まれてレンダリングされるときに境界ボックスの外側に割り当てられる余分な領域です。 パディングは境界ボックス内の領域であり、要素内の追加コンテンツまたは子オブジェクトのレイアウトに影響します。 FrameworkElement ではパディング プロパティは定義されませんが、いくつかの派生クラスでは Padding プロパティが定義されています。 次のようなものが含まれます。
- Border.Padding
- Control.Padding
- TextBlock.Padding
- RichTextBlock.Padding
- ItemsPresenter.Padding 余白とパディングの関係の詳細については、「 配置、余白、パディング 」または「 XAML でレイアウトを定義する」を参照してください。