Border
.NET マルチプラットフォーム アプリ UI (.NET MAUI) Border は、別のコントロールの周囲に境界線、背景、またはその両方を描画するコンテナー コントロールです。 Border に含めることができる子オブジェクトは 1 つだけです。 複数のオブジェクトの周囲に境界線を置きたい場合は、それらをレイアウトなどのコンテナー オブジェクトで囲みます。 レイアウトの詳細については、「 のレイアウト」を参照してください。
Border には、次のプロパティが定義されています。
IView
型のContent
は、境界線に表示するコンテンツを表します。 このプロパティは、Border クラスのContentProperty
であるため、XAML から明示的に設定する必要はありません。Thickness
型のPadding
は、境界線とその子要素の間の距離を表します。IShape
型のStrokeShape
は、境界線の図形を表します。 このプロパティには、文字列を同等のIShape
に変換できる型コンバーターが適用されています。 既定値は Rectangle です。 したがって、Border は既定で四角形になります。- Brush 型の
Stroke
は、境界線の描画に使用されるブラシを示します。 double
型のStrokeThickness
は、境界線の幅を示します。 このプロパティの既定値は 1.0 です。DoubleCollection
型のStrokeDashArray
は、境界線を構成するダッシュとギャップのパターンを示すdouble
値のコレクションを表します。double
型のStrokeDashOffset
は、ダッシュ パターン内のダッシュが始まる距離を指定します。 このプロパティの既定値は 0.0 です。PenLineCap
型のStrokeLineCap
は、その行の始点と終点の図形を表します。 このプロパティの既定値はPenLineCap.Flat
です。PenLineJoin
型のStrokeLineJoin
は、ストローク図形の頂点で使用される結合の型を指定します。 このプロパティの既定値はPenLineJoin.Miter
です。double
型のStrokeMiterLimit
は、ストロークの太さの半分に対するマイターの長さの比率の制限を指定します。 このプロパティの既定値は 10.0 です。
これらのプロパティは、BindableProperty オブジェクトが基になっています。つまり、これらは、データ バインディングの対象にすることができ、スタイルを設定できます。
境界線の図形とストロークを制御するプロパティの詳細については、「図形」をご覧ください。
境界線を作成する
境界線を描画するには、Border オブジェクトを作成し、そのプロパティを設定して外観を定義します。 次に、その子を、罫線を追加するコントロールに設定します。
次の XAML の例は、Label の周囲に境界線を描画する方法を示しています。
<Border Stroke="#C49B33"
StrokeThickness="4"
StrokeShape="RoundRectangle 40,0,0,40"
Background="#2B0B98"
Padding="16,8"
HorizontalOptions="Center">
<Label Text=".NET MAUI"
TextColor="White"
FontSize="18"
FontAttributes="Bold" />
</Border>
あるいは、StrokeShape
プロパティ値は、プロパティ タグ構文を使用して指定できます。
<Border Stroke="#C49B33"
StrokeThickness="4"
Background="#2B0B98"
Padding="16,8"
HorizontalOptions="Center">
<Border.StrokeShape>
<RoundRectangle CornerRadius="40,0,0,40" />
</Border.StrokeShape>
<Label Text=".NET MAUI"
TextColor="White"
FontSize="18"
FontAttributes="Bold" />
</Border>
同等の C# コードを次に示します。
using Microsoft.Maui.Controls.Shapes;
using GradientStop = Microsoft.Maui.Controls.GradientStop;
...
Border border = new Border
{
Stroke = Color.FromArgb("#C49B33"),
Background = Color.FromArgb("#2B0B98"),
StrokeThickness = 4,
Padding = new Thickness(16, 8),
HorizontalOptions = LayoutOptions.Center,
StrokeShape = new RoundRectangle
{
CornerRadius = new CornerRadius(40, 0, 0, 40)
},
Content = new Label
{
Text = ".NET MAUI",
TextColor = Colors.White,
FontSize = 18,
FontAttributes = FontAttributes.Bold
}
};
この例では、左上隅と右下隅が丸い境界線を Label の周囲に描画します。 境界線の図形は RoundRectangle オブジェクトとして定義され、その CornerRadius
プロパティは Thickness
値に設定され、四角形の各コーナーを独立して制御できるようになります。
Stroke
プロパティは、Brush 型であるため、グラデーションを使用して境界線を描画することもできます。
<Border StrokeThickness="4"
StrokeShape="RoundRectangle 40,0,0,40"
Background="#2B0B98"
Padding="16,8"
HorizontalOptions="Center">
<Border.Stroke>
<LinearGradientBrush EndPoint="0,1">
<GradientStop Color="Orange"
Offset="0.1" />
<GradientStop Color="Brown"
Offset="1.0" />
</LinearGradientBrush>
</Border.Stroke>
<Label Text=".NET MAUI"
TextColor="White"
FontSize="18"
FontAttributes="Bold" />
</Border>
同等の C# コードを次に示します。
using Microsoft.Maui.Controls.Shapes;
using GradientStop = Microsoft.Maui.Controls.GradientStop;
...
Border gradientBorder = new Border
{
StrokeThickness = 4,
Background = Color.FromArgb("#2B0B98"),
Padding = new Thickness(16, 8),
HorizontalOptions = LayoutOptions.Center,
StrokeShape = new RoundRectangle
{
CornerRadius = new CornerRadius(40, 0, 0, 40)
},
Stroke = new LinearGradientBrush
{
EndPoint = new Point(0, 1),
GradientStops = new GradientStopCollection
{
new GradientStop { Color = Colors.Orange, Offset = 0.1f },
new GradientStop { Color = Colors.Brown, Offset = 1.0f }
},
},
Content = new Label
{
Text = ".NET MAUI",
TextColor = Colors.White,
FontSize = 18,
FontAttributes = FontAttributes.Bold
}
};
この例では、線形グラデーションを使用する境界線が Label の周囲に描画されます。
文字列を使用して罫線の図形を定義する
XAML では、StrokeShape
プロパティの値は、プロパティ タグ構文を使用して、または string
として定義できます。 StrokeShape
プロパティの有効な string
値は次のとおりです。
Ellipse
Line
の後に 1 つまたは 2 つの x 座標と y 座標のペアが続きます。 たとえば、Line 10 20
は (10,20) から (0,0) までの線を描画し、Line 10 20, 100 120
は (10,20) から (100,120) までの線を描画します。Path
の後にパス マークアップ構文データが続きます。 たとえば、Path M 10,100 L 100,100 100,50Z
は三角形の境界線を描画します。 パス マークアップ構文の詳細については、「パス マークアップ構文」をご覧ください。Polygon
の後に、x 座標と y 座標のペアのコレクションが続きます。 たとえば、Polygon 40 10, 70 80, 10 50
のようにします。Polyline
の後に、コレクションの x 座標と y 座標のペアが続きます。 たとえば、Polyline 0,0 10,30 15,0 18,60 23,30 35,30 40,0 43,60 48,30 100,30
のようにします。Rectangle
RoundRectangle
の後に、必要に応じて角の半径が続きます。 たとえば、RoundRectangle 40
またはRoundRectangle 40,0,0,40
です。
重要
Line
は StrokeShape
プロパティの有効な string
値ですが、その使用はサポートされていません。
String
ベースの x 座標と y 座標のペアは、1 つのコンマまたは 1 つ以上のスペースで区切ることができます。 たとえば、”40,10 70,80” と ”40 10, 70 80” はどちらも有効です。 座標ペアは、double
型の X
および Y
プロパティを定義する Point
オブジェクトに変換されます。
.NET MAUI