diff --git a/samples/ControlCatalog/Pages/TextBoxPage.xaml b/samples/ControlCatalog/Pages/TextBoxPage.xaml
index dec5f74da8..e3d0c5e4e2 100644
--- a/samples/ControlCatalog/Pages/TextBoxPage.xaml
+++ b/samples/ControlCatalog/Pages/TextBoxPage.xaml
@@ -66,6 +66,12 @@
FontFamily="Comic Sans MS"
InputMethod.IsInputMethodEnabled="False"
Foreground="Red"/>
+
diff --git a/src/Avalonia.Controls/Presenters/TextPresenter.cs b/src/Avalonia.Controls/Presenters/TextPresenter.cs
index 07061940b5..b0f8752d65 100644
--- a/src/Avalonia.Controls/Presenters/TextPresenter.cs
+++ b/src/Avalonia.Controls/Presenters/TextPresenter.cs
@@ -33,7 +33,7 @@ namespace Avalonia.Controls.Presenters
public static readonly StyledProperty CaretBrushProperty =
AvaloniaProperty.Register(nameof(CaretBrush));
-
+
public static readonly DirectProperty SelectionStartProperty =
TextBox.SelectionStartProperty.AddOwner(
o => o.SelectionStart,
@@ -43,7 +43,7 @@ namespace Avalonia.Controls.Presenters
TextBox.SelectionEndProperty.AddOwner(
o => o.SelectionEnd,
(o, v) => o.SelectionEnd = v);
-
+
///
/// Defines the property.
///
@@ -65,6 +65,12 @@ namespace Avalonia.Controls.Presenters
public static readonly StyledProperty TextWrappingProperty =
TextBlock.TextWrappingProperty.AddOwner();
+ ///
+ /// Defines the property.
+ ///
+ public static readonly StyledProperty LineHeightProperty =
+ AvaloniaProperty.Register(nameof(LineHeight), defaultValue: double.NaN);
+
///
/// Defines the property.
///
@@ -179,6 +185,15 @@ namespace Avalonia.Controls.Presenters
get => GetValue(TextWrappingProperty);
set => SetValue(TextWrappingProperty, value);
}
+
+ ///
+ /// Gets or sets the line height. By default, this is set to , which determines the appropriate height automatically.
+ ///
+ public double LineHeight
+ {
+ get => GetValue(LineHeightProperty);
+ set => SetValue(LineHeightProperty, value);
+ }
///
/// Gets or sets the text alignment.
@@ -253,7 +268,7 @@ namespace Avalonia.Controls.Presenters
get => GetValue(CaretBrushProperty);
set => SetValue(CaretBrushProperty, value);
}
-
+
public int SelectionStart
{
get
@@ -281,7 +296,7 @@ namespace Avalonia.Controls.Presenters
SetAndRaise(SelectionEndProperty, ref _selectionEnd, value);
}
}
-
+
protected override bool BypassFlowDirectionPolicies => true;
///
@@ -301,7 +316,7 @@ namespace Avalonia.Controls.Presenters
var textLayout = new TextLayout(text, typeface, FontSize, foreground, TextAlignment,
TextWrapping, maxWidth: maxWidth, maxHeight: maxHeight, textStyleOverrides: textStyleOverrides,
- flowDirection: FlowDirection);
+ flowDirection: FlowDirection, lineHeight: LineHeight);
return textLayout;
}
diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs
index 45e66828c1..2d14ff0f79 100644
--- a/src/Avalonia.Controls/TextBox.cs
+++ b/src/Avalonia.Controls/TextBox.cs
@@ -79,8 +79,8 @@ namespace Avalonia.Controls
AvaloniaProperty.Register(nameof(MaxLength), defaultValue: 0);
public static readonly StyledProperty MaxLinesProperty =
- AvaloniaProperty.Register(nameof(MaxLines), defaultValue: 0);
-
+ AvaloniaProperty.Register(nameof(MaxLines), defaultValue: 0);
+
public static readonly DirectProperty TextProperty =
TextBlock.TextProperty.AddOwnerWithDataValidation(
o => o.Text,
@@ -105,6 +105,12 @@ namespace Avalonia.Controls
public static readonly StyledProperty TextWrappingProperty =
TextBlock.TextWrappingProperty.AddOwner();
+
+ ///
+ /// Defines see property.
+ ///
+ public static readonly StyledProperty LineHeightProperty =
+ AvaloniaProperty.Register(nameof(LineHeight), defaultValue: double.NaN);
public static readonly StyledProperty WatermarkProperty =
AvaloniaProperty.Register(nameof(Watermark));
@@ -358,6 +364,15 @@ namespace Avalonia.Controls
get { return GetValue(MaxLinesProperty); }
set { SetValue(MaxLinesProperty, value); }
}
+
+ ///
+ /// Gets or sets the line height. By default, this is set to , which determines the appropriate height automatically.
+ ///
+ public double LineHeight
+ {
+ get { return GetValue(LineHeightProperty); }
+ set { SetValue(LineHeightProperty, value); }
+ }
[Content]
public string? Text
diff --git a/src/Avalonia.Themes.Default/Controls/TextBox.xaml b/src/Avalonia.Themes.Default/Controls/TextBox.xaml
index 6e3898a828..1885d3b65b 100644
--- a/src/Avalonia.Themes.Default/Controls/TextBox.xaml
+++ b/src/Avalonia.Themes.Default/Controls/TextBox.xaml
@@ -76,6 +76,7 @@
SelectionEnd="{TemplateBinding SelectionEnd}"
TextAlignment="{TemplateBinding TextAlignment}"
TextWrapping="{TemplateBinding TextWrapping}"
+ LineHeight="{TemplateBinding LineHeight}"
PasswordChar="{TemplateBinding PasswordChar}"
RevealPassword="{TemplateBinding RevealPassword}"
SelectionBrush="{TemplateBinding SelectionBrush}"
diff --git a/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml b/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
index 095a2ef51f..40d9b11f7c 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
@@ -89,6 +89,7 @@
SelectionEnd="{TemplateBinding SelectionEnd}"
TextAlignment="{TemplateBinding TextAlignment}"
TextWrapping="{TemplateBinding TextWrapping}"
+ LineHeight="{TemplateBinding LineHeight}"
PasswordChar="{TemplateBinding PasswordChar}"
RevealPassword="{TemplateBinding RevealPassword}"
SelectionBrush="{TemplateBinding SelectionBrush}"