FrameworkElement.Margin プロパティ

定義

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 ページのオブジェクト ツリーに新しい要素を追加する前に行われます。 この場合、Uniform-value コンストラクターで作成された新しい 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);
    }
}

注釈

余白の動作とレイアウト

余白の値が 0 より大きいと、オブジェクトの ActualWidthActualHeight の外側にスペースが適用されます。

余白は、レイアウト内のピア オブジェクトの追加です。たとえば、隣接するエッジに設定 30 余白を持つ 2 つの水平方向または垂直方向に隣接するオブジェクトの間に 60 ピクセルのスペースが設定されます。

余白が設定されているオブジェクトは、割り当てられた四角形のスペースが余白とオブジェクトのコンテンツ領域に十分な大きさでない場合、通常、指定された余白のサイズを制限しません。 コンテンツ領域は、レイアウトの計算時に代わりに制約されます。 余白が制限される唯一のケースは、コンテンツが既にゼロに制限されている場合です。 ただし、この動作は最終的には、Margin を解釈する特定の型と、そのオブジェクトのレイアウト コンテナーによって制御されます。

余白ディメンションの負の値は許可されますが、慎重に使用する必要があります (負の余白は、クラス レイアウトの実装によって異なる方法で解釈される可能性があることに注意してください)。 負の余白は、通常、オブジェクトのコンテンツをその方向にクリップします。

マージン値の非整数値は技術的に許可されますが、通常は避ける必要があります。

余白とパディング

関連する概念はパディングです。 オブジェクトとその境界ボックスの場合、余白は、UI 要素が含まれてレンダリングされるときに境界ボックスの外側に割り当てられる余分な領域です。 パディングは境界ボックス内の領域であり、要素内の追加コンテンツまたは子オブジェクトのレイアウトに影響します。 FrameworkElement では埋め込みプロパティは定義されませんが、いくつかの派生クラスでは Padding プロパティが定義されています。 これらには次のものが含まれます。

余白とパディングの関係の詳細については、「 配置、余白、パディング 」または「 XAML でレイアウトを定義する」を参照してください。

適用対象

こちらもご覧ください