この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.Margin プロパティ

FrameworkElement の外側の余白を取得または設定します。

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public Thickness Margin { get; set; }
<frameworkElement Margin="uniform"/>
- or -
<frameworkElement Margin="left+right,top+bottom"/>
- or -
<frameworkElement Margin="left,top,right,bottom"/>

XAML の値

uniform

均一の Thickness を指定するピクセル単位の値。 uniform の値は、Thickness の 4 つのプロパティ (LeftTopRightBottom) すべてに適用されます。

left+right

対称的な ThicknessLeft および Right を指定するピクセル単位の値。

top+bottom

対照的な ThicknessTop および Bottom を指定するピクセル単位の値。

left top right bottom

Thickness 構造体の 4 つのサイズ プロパティ (LeftTopRightBottom) を指定するピクセル単位の値。

  • この前に示した XAML 構文では、各値を区切る区切り記号として、コンマの代わりにスペースを使用することもできます。

  • コードと XAML の両方における Margin の使用に影響する値型、上限値、およびエッジ ケースの考慮事項については、「解説」を参照してください。

プロパティ値

型 : System.Windows.Thickness
オブジェクトの余白の値を指定します。 既定値は、すべてのプロパティ (大きさ) が 0 の既定の Thickness です。

Dependency property identifier field: MarginProperty

この余白は、このオブジェクトと、レイアウトで UI が作成されるときに隣接する他のオブジェクトとの間の領域です。 レイアウトに関係する他のオブジェクトは、ピア オブジェクト (共通の親コントロールのコレクションに含まれる他のオブジェクトなど) の場合もあれば、ビジュアル ツリーにおけるこのオブジェクトの親の場合もあります。

Margin は、オブジェクトの周囲の余白を非対称に設定できるように、均一の値ではなく、個別の Thickness 値として設定できます。 Thickness 構造体自体が文字列の型変換をサポートしているため、XAML 属性構文でも非対称の Margin を指定できます。 たとえば、XAML の場合、余白を Margin="15,10,0,10" として指定したオブジェクトでは、左側には 15 ピクセル、上には 10 ピクセル、右側には 0 ピクセル、下には 10 ピクセルの余白があります。


<Grid x:Name="LayoutRoot" Background="Coral" Width="300" Height="100" ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Grid.Row="0" Text="First Name" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <TextBlock Grid.Column="0" Grid.Row="1" Text="Last Name" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <TextBox Grid.Column="1" Grid.Row="0" Margin="15,10,15,10" />
    <TextBox Grid.Column="1" Grid.Row="1" Margin="15,10,15,10" />

</Grid>


Margin プロパティの設定による影響を次の図に示します。

マージンと配置ダイアグラム

余白の動作とレイアウト

0 を超える余白の値は、レイアウトの ActualWidthActualHeight の外側の領域に適用されます。

余白はレイアウトのピア オブジェクトの間で加算されます。たとえば、水平方向または垂直方向に隣接する 2 つのオブジェクトの隣接部の余白がどちらも 30 に設定されていた場合、そのオブジェクト間の領域は 60 ピクセルになります。

通常、余白が設定されているオブジェクトでは、割り当てられた四角形の領域がそのオブジェクト (余白 + コンテンツ) に対して小さすぎる場合でも、指定されている Margin のサイズは制限されません。 代わりにコンテンツの領域が、レイアウトの計算時に制限されます。 コンテンツの制限が 0 に達しない限り、余白が制限されることはありません。 ただし、この動作は最終的に、Margin を解釈する特定の型、およびそのオブジェクトのレイアウト コンテナーによって制御されます。

余白の値には負の寸法を使用することも可能ですが、その場合は注意が必要です (負の余白は、クラスのレイアウトの実装によって解釈が変わる可能性があります)。 通常、負の余白はオブジェクトのコンテンツをその方向にクリップします。

余白に整数以外の値を設定することも技術的には可能ですが、通常は避けるようにしてください。整数以外の値を設定しても、通常は、レイアウトの既定の丸め処理によって丸められます。 詳細については、レイアウトの丸め のトピックを参照してください。

余白の大きさにはあらかじめ指定された上限はなく、オブジェクト コンテンツが Silverlight コンテンツ領域の外側に配置されてビューに表示されなくなるような余白を設定することもできます (通常は適切ではありません)。

余白とパディング

関連する概念はパディングです。 オブジェクトとその境界ボックスの場合、余白は、含まれる UI 要素がレンダリングされるときに、境界ボックスの外側に割り当てられる余分なスペースです。 パディングは境界ボックス内の領域で、要素内のすべての他のコンテンツまたは子オブジェクト レイアウトに影響します。 コンテンツ モデルがまだ、FrameworkElement で定義されていないため、代わりに、パディングのプロパティが、コンテンツ モデルを定義するサブクラスで定義されます。 このようなプロパティで最も一般的に使用されるのは、TextBlock.Padding です。 その他のプロパティには、TextBlock.Padding および Border.Padding があります。 余白とパディングの関係の詳細については、「Silverlight のレイアウト システム」を参照してください。

余白のアニメーション化

現在、Silverlight は余白の直接アニメーションをサポートしていません。WPF には存在する ThicknessAnimation 型が Silverlight には存在しないためです。 BorderThickness Thickness 型を使用するため、Border には同じ問題があります。 回避策としては、要素を透過パネルにラップし、関連するパネルの Double プロパティをアニメーション化する方法が考えられます。

次の例では、XAML で各種要素の余白を設定します。


<Canvas>
    <Rectangle Height="500" Width="500" Margin="50,50,0,0" Stroke="Black" />
    <InkPresenter x:Name="MyIP" Height="500" Width="500" Background="Transparent" Margin="50,50,0,0"
                  MouseLeftButtonDown="MyIP_MouseLeftButtonDown"
                  MouseMove="MyIP_MouseMove"
                  LostMouseCapture="MyIP_LostMouseCapture"/>
    <Button x:Name="BtPen" Content="Pen" Margin="70,490,0,0" Height="25" Width="90" Click="BtPen_Click" />
    <Button x:Name="BtMarker" Content="Marker" Margin="180,490,0,0" Height="25" Width="90" Click="BtMarker_Click" />
    <Button x:Name="BtHighlighter" Content="Highlighter" Margin="290,490,0,0" Height="25" Width="90" Click="BtHighlighter_Click" />
    <Button x:Name="BtEraser" Content="Erase All" Margin="400,490,0,0" Height="25" Width="90" Click="BtEraser_Click" />
</Canvas>


次の例では、新しい Thickness をインラインで作成することによって、コードから Margin を設定します。 この例は、Margin をコードで設定しなければならない状況を想定しています。つまり、Margin を XAML ではなくコードで設定し、完全な UI 要素を作成します。


Button button1 = new Button();
button1.Width = 50;
button1.Height = 30;
StackPanel panel1 = new StackPanel();
panel1.Orientation = Orientation.Horizontal;
Rectangle rect1 = new Rectangle();
rect1.Width = 10;
rect1.Fill = new SolidColorBrush(Colors.Green);
TextBlock tb3 = new TextBlock();
tb3.Margin = new Thickness(2);
tb3.Text = "Green";
tb3.TextAlignment = TextAlignment.Center;
panel1.Children.Add(tb3);
panel1.Children.Add(rect1);
button1.Content = panel1;
LayoutRoot.Children.Add(button1);


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

表示:
© 2015 Microsoft