このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.Margin プロパティ

2013/12/12

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

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。

'宣言
Public Property Margin As Thickness
<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 です。

依存関係プロパティの識別子フィールド:  MarginProperty

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

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


<Grid x:Name="LayoutRoot" Background="Coral" Width="350" Height="135" 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 プロパティの設定による影響を次の図に示します。

margin and alignment diagram

余白の動作とレイアウト

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

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

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

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

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

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

余白とパディング

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

余白のアニメーション化

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

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


<Canvas>
    <Rectangle Height="500" Width="480" Margin="0,0,0,0" Stroke="Gray" />
    <InkPresenter x:Name="MyIP" Height="500" Width="480" Background="Transparent" Margin="0,0,0,0"
                  MouseLeftButtonDown="MyIP_MouseLeftButtonDown"
                  MouseMove="MyIP_MouseMove"
                  LostMouseCapture="MyIP_LostMouseCapture"/>
    <Button x:Name="BtPen" Content="Pen" Margin="0,500,0,0" Height="72" Width="100" Click="BtPen_Click" />
    <Button x:Name="BtMarker" Content="Marker" Margin="85,500,0,0" Height="72" Width="140" Click="BtMarker_Click" />
    <Button x:Name="BtHighlighter" Content="Highlight" Margin="210,500,0,0" Height="72" Width="170" Click="BtHighlighter_Click" />
    <Button x:Name="BtEraser" Content="Erase" Margin="365,500,0,0" Height="72" Width="110" Click="BtEraser_Click" />
</Canvas>


次の例では、新しい Thickness をインラインで作成することによって、コードから Margin を設定します。コンテキストに示すように、コードでの Margin の設定が必要になる場合があります。Margin が XAML ではなくコードで設定されている完全な UI 要素を作成している場合などです。


Dim button1 As New Button()
button1.Width = 300
button1.Height = 80
Dim panel1 As New StackPanel()
panel1.Orientation = System.Windows.Controls.Orientation.Horizontal
Dim rect1 As New Rectangle()
rect1.Width = 200
rect1.Fill = New SolidColorBrush(Colors.Green)
Dim tb3 As 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)


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2015 Microsoft