Skip to main content

BnLength

Namespace: BlazorNative.Components

A layout length: a number of points, or a percentage. There is deliberately no conversion from string — that absence is what makes Width="12px" a compile error rather than a value both shells log and ignore.

public readonly record struct BnLength

Inheritance ObjectValueTypeBnLength
Implements IEquatable<BnLength>
Attributes IsReadOnlyAttribute

Remarks:

Use it as BnLength? on a parameter, never bare. null means "unset" and reaches the wire as an absent attribute, which is what makes the shells reset the style. A bare default(BnLength) is zero points — a real length — and would silently collapse a node nobody meant to size.

Negative values are representable and are rejected by the shells, not by this type. They are legal on margin and the insets and illegal elsewhere, which is a per-property rule this type does not carry.

Properties

Value

The magnitude.

public float Value { get; init; }

Property Value

Single

Unit

Whether Value is points or a percentage.

public BnLengthUnit Unit { get; init; }

Property Value

BnLengthUnit

Constructors

BnLength(Single, BnLengthUnit)

A layout length: a number of points, or a percentage. There is deliberately no conversion from string — that absence is what makes Width="12px" a compile error rather than a value both shells log and ignore.

public BnLength(float Value, BnLengthUnit Unit)

Parameters

Value Single
The magnitude.

Unit BnLengthUnit
Whether Value is points or a percentage.

Remarks:

Use it as BnLength? on a parameter, never bare. null means "unset" and reaches the wire as an absent attribute, which is what makes the shells reset the style. A bare default(BnLength) is zero points — a real length — and would silently collapse a node nobody meant to size.

Negative values are representable and are rejected by the shells, not by this type. They are legal on margin and the insets and illegal elsewhere, which is a per-property rule this type does not carry.

Methods

Percent(Single)

A length as a percentage of the parent's corresponding dimension.

public static BnLength Percent(float value)

Parameters

value Single
The percentage, without the sign.

Returns

BnLength
A percentage-valued length.

ToStyleValue()

The wire form, INVARIANTLY. The shells parse with a C/Java float parser, so a Dutch locale must never put "1,5" on the wire.

public string ToStyleValue()

Returns

String
A bare number, or a number with a trailing percent sign.

Operators

implicit operator BnLength(Single)

A length in points.

public static implicit operator BnLength(float points)

Parameters

points Single
The magnitude, in density-independent points.

Returns

BnLength

implicit operator BnLength(Double)

A length in points, from a double. Required, not a convenience: Razor compiles Width="12.5" as a double literal, and double to float is a narrowing conversion, so without this every decimal literal in markup fails to compile.

public static implicit operator BnLength(double points)

Parameters

points Double
The magnitude, in density-independent points.

Returns

BnLength