Граница
Многоплатформенный пользовательский интерфейс приложения .NET (.NET MAUI) Border — это элемент управления контейнером, который рисует границу, фон или оба элемента управления вокруг другого элемента управления. Объект Border может содержать только один дочерний объект. Если вы хотите поместить границу вокруг нескольких объектов, заключите их в объект контейнера, например макет. Дополнительные сведения о макетах см. в статье Макеты .
Border определяет следующие свойства:
Content
IView
Тип , представляет содержимое для отображения в границе. Это свойство является классомContentProperty
Border и поэтому не требуется явно задавать из XAML.Padding
Thickness
Тип , представляет расстояние между границей и его дочерним элементом.StrokeShape
IShape
Тип , описывает форму границы. Это свойство имеет преобразователь типов, примененный к нему, который может преобразовать строку в эквивалент.IShape
Значение по умолчанию — Rectangle. Поэтому прямоугольный Border по умолчанию будет прямоугольным.Stroke
, тип Brush, указывает кисть, используемую для рисования границы.StrokeThickness
, типdouble
, указывает ширину границы. Значение по умолчанию этого свойства — 1.0.StrokeDashArray
типDoubleCollection
, представляющий коллекцию значений, указывающих шаблон дефисовdouble
и пробелов, составляющих границу.StrokeDashOffset
double
Тип , указывает расстояние в шаблоне тире, где начинается тире. Значение по умолчанию этого свойства равно 0.0.StrokeLineCap
PenLineCap
Тип , описывает фигуру в начале и конце его линии. Значение по умолчанию этого свойства равноPenLineCap.Flat
.StrokeLineJoin
, типPenLineJoin
, указывает тип соединения, который используется в вершинах фигуры штриха. Значение по умолчанию этого свойства равноPenLineJoin.Miter
.StrokeMiterLimit
, типdouble
, указывает ограничение на соотношение длины митера до половины толщины штриха. Значение по умолчанию этого свойства равно 10.0.
Эти свойства поддерживаются объектами BindableProperty, то есть эти свойства можно указывать в качестве целевых для привязки и стилизации данных.
Внимание
При создании границы с помощью фигуры, такой как Rectangle или Polygon, следует использовать только закрытые фигуры. Поэтому открытые фигуры, такие как Line неподдерживаемые.
Дополнительные сведения о свойствах, управляющих фигурой и росчерком границы, см. в разделе "Фигуры".
Создание границы
Чтобы нарисовать границу 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
. Допустимые string
значения для StrokeShape
свойства:
Ellipse
Line
, за которым следует одна или две пары координат 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
это допустимое string
значение для StrokeShape
свойства, его использование не поддерживается.
String
Пары x-и y-координат могут быть разделены одной запятой и (или) одним или несколькими пробелами. Например, допустимы "40 10 70 80" и "40 10, 70 80". Пары координат будут преобразованы в Point
объекты, определяющие X
и Y
свойства типа double
.