diff --git a/src/Avalonia.Base/Animation/CrossFade.cs b/src/Avalonia.Base/Animation/CrossFade.cs
index 608a0880ec..a229bc7ce6 100644
--- a/src/Avalonia.Base/Animation/CrossFade.cs
+++ b/src/Avalonia.Base/Animation/CrossFade.cs
@@ -10,7 +10,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Animation
{
///
- /// Defines a cross-fade animation between two s.
+ /// Defines a cross-fade animation between two s.
///
public class CrossFade : IPageTransition
{
diff --git a/src/Avalonia.Base/CornerRadius.cs b/src/Avalonia.Base/CornerRadius.cs
index 893f7c4565..d56a0ef19d 100644
--- a/src/Avalonia.Base/CornerRadius.cs
+++ b/src/Avalonia.Base/CornerRadius.cs
@@ -100,7 +100,7 @@ namespace Avalonia
public override string ToString()
{
- return $"{TopLeft},{TopRight},{BottomRight},{BottomLeft}";
+ return FormattableString.Invariant($"{TopLeft},{TopRight},{BottomRight},{BottomLeft}");
}
public static CornerRadius Parse(string s)
diff --git a/src/Avalonia.Base/Media/ArcSegment.cs b/src/Avalonia.Base/Media/ArcSegment.cs
index 888cb896bb..b7dbd4925b 100644
--- a/src/Avalonia.Base/Media/ArcSegment.cs
+++ b/src/Avalonia.Base/Media/ArcSegment.cs
@@ -1,3 +1,4 @@
+using System;
using System.Globalization;
namespace Avalonia.Media
@@ -100,6 +101,6 @@ namespace Avalonia.Media
}
public override string ToString()
- => $"A {Size} {RotationAngle.ToString(CultureInfo.InvariantCulture)} {(IsLargeArc ? 1 : 0)} {(int)SweepDirection} {Point}";
+ => FormattableString.Invariant($"A {Size} {RotationAngle} {(IsLargeArc ? 1 : 0)} {(int)SweepDirection} {Point}");
}
-}
\ No newline at end of file
+}
diff --git a/src/Avalonia.Base/Media/BezierSegment .cs b/src/Avalonia.Base/Media/BezierSegment .cs
index d4330830d9..64ea2924cc 100644
--- a/src/Avalonia.Base/Media/BezierSegment .cs
+++ b/src/Avalonia.Base/Media/BezierSegment .cs
@@ -1,3 +1,5 @@
+using System;
+
namespace Avalonia.Media
{
public sealed class BezierSegment : PathSegment
@@ -60,6 +62,6 @@ namespace Avalonia.Media
}
public override string ToString()
- => $"C {Point1} {Point2} {Point3}";
+ => FormattableString.Invariant($"C {Point1} {Point2} {Point3}");
}
-}
\ No newline at end of file
+}
diff --git a/src/Avalonia.Base/Media/BoxShadow.cs b/src/Avalonia.Base/Media/BoxShadow.cs
index cc97d89cfc..2139516be6 100644
--- a/src/Avalonia.Base/Media/BoxShadow.cs
+++ b/src/Avalonia.Base/Media/BoxShadow.cs
@@ -94,22 +94,22 @@ namespace Avalonia.Media
if (OffsetX != 0.0)
{
- sb.AppendFormat(" {0}", OffsetX.ToString());
+ sb.AppendFormat(" {0}", OffsetX.ToString(CultureInfo.InvariantCulture));
}
if (OffsetY != 0.0)
{
- sb.AppendFormat(" {0}", OffsetY.ToString());
+ sb.AppendFormat(" {0}", OffsetY.ToString(CultureInfo.InvariantCulture));
}
if (Blur != 0.0)
{
- sb.AppendFormat(" {0}", Blur.ToString());
+ sb.AppendFormat(" {0}", Blur.ToString(CultureInfo.InvariantCulture));
}
if (Spread != 0.0)
{
- sb.AppendFormat(" {0}", Spread.ToString());
+ sb.AppendFormat(" {0}", Spread.ToString(CultureInfo.InvariantCulture));
}
sb.AppendFormat(" {0}", Color.ToString());
diff --git a/src/Avalonia.Base/Media/Imaging/RenderTargetBitmap.cs b/src/Avalonia.Base/Media/Imaging/RenderTargetBitmap.cs
index c4508c3f5c..d56711ad68 100644
--- a/src/Avalonia.Base/Media/Imaging/RenderTargetBitmap.cs
+++ b/src/Avalonia.Base/Media/Imaging/RenderTargetBitmap.cs
@@ -7,7 +7,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media.Imaging
{
///
- /// A bitmap that holds the rendering of a .
+ /// A bitmap that holds the rendering of a .
///
public class RenderTargetBitmap : Bitmap, IDisposable, IRenderTarget
{
diff --git a/src/Avalonia.Base/Media/Immutable/ImmutableTransform.cs b/src/Avalonia.Base/Media/Immutable/ImmutableTransform.cs
index d5ff2b8317..4478504eca 100644
--- a/src/Avalonia.Base/Media/Immutable/ImmutableTransform.cs
+++ b/src/Avalonia.Base/Media/Immutable/ImmutableTransform.cs
@@ -3,7 +3,7 @@
namespace Avalonia.Media.Immutable
{
///
- /// Represents a transform on an .
+ /// Represents a transform on an .
///
public class ImmutableTransform : ITransform
{
diff --git a/src/Avalonia.Base/Media/Immutable/ImmutableVisualBrush.cs b/src/Avalonia.Base/Media/Immutable/ImmutableVisualBrush.cs
index 1e0133c9b7..9b443391c5 100644
--- a/src/Avalonia.Base/Media/Immutable/ImmutableVisualBrush.cs
+++ b/src/Avalonia.Base/Media/Immutable/ImmutableVisualBrush.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media.Immutable
{
///
- /// Paints an area with an .
+ /// Paints an area with an .
///
internal class ImmutableVisualBrush : ImmutableTileBrush, IVisualBrush
{
diff --git a/src/Avalonia.Base/Media/LineSegment.cs b/src/Avalonia.Base/Media/LineSegment.cs
index 49d9ebeb72..5729ab2c3b 100644
--- a/src/Avalonia.Base/Media/LineSegment.cs
+++ b/src/Avalonia.Base/Media/LineSegment.cs
@@ -1,3 +1,5 @@
+using System;
+
namespace Avalonia.Media
{
public sealed class LineSegment : PathSegment
@@ -26,6 +28,6 @@ namespace Avalonia.Media
}
public override string ToString()
- => $"L {Point}";
+ => FormattableString.Invariant($"L {Point}");
}
-}
\ No newline at end of file
+}
diff --git a/src/Avalonia.Base/Media/MatrixTransform.cs b/src/Avalonia.Base/Media/MatrixTransform.cs
index 4e60e1e290..c61acb730c 100644
--- a/src/Avalonia.Base/Media/MatrixTransform.cs
+++ b/src/Avalonia.Base/Media/MatrixTransform.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Transforms an according to a .
+ /// Transforms an according to a .
///
public class MatrixTransform : Transform
{
diff --git a/src/Avalonia.Base/Media/PathFigure.cs b/src/Avalonia.Base/Media/PathFigure.cs
index caf86cb234..e1b5e8b504 100644
--- a/src/Avalonia.Base/Media/PathFigure.cs
+++ b/src/Avalonia.Base/Media/PathFigure.cs
@@ -126,7 +126,7 @@ namespace Avalonia.Media
}
public override string ToString()
- => $"M {StartPoint} {string.Join(" ", _segments ?? Enumerable.Empty())}{(IsClosed ? "Z" : "")}";
+ => FormattableString.Invariant($"M {StartPoint} {string.Join(" ", _segments ?? Enumerable.Empty())}{(IsClosed ? "Z" : "")}");
internal void ApplyTo(StreamGeometryContext ctx)
{
diff --git a/src/Avalonia.Base/Media/PathGeometry.cs b/src/Avalonia.Base/Media/PathGeometry.cs
index 2c8a51c541..8292afde7e 100644
--- a/src/Avalonia.Base/Media/PathGeometry.cs
+++ b/src/Avalonia.Base/Media/PathGeometry.cs
@@ -133,7 +133,7 @@ namespace Avalonia.Media
public override string ToString()
{
var figuresString = _figures is not null ? string.Join(" ", _figures) : string.Empty;
- return $"{(FillRule != FillRule.EvenOdd ? "F1 " : "")}{figuresString}";
+ return FormattableString.Invariant($"{(FillRule != FillRule.EvenOdd ? "F1 " : "")}{figuresString}");
}
}
}
diff --git a/src/Avalonia.Base/Media/QuadraticBezierSegment .cs b/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
index f1a0ccaaa0..9dc24e2a93 100644
--- a/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
+++ b/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
@@ -1,3 +1,5 @@
+using System;
+
namespace Avalonia.Media
{
public sealed class QuadraticBezierSegment : PathSegment
@@ -44,6 +46,6 @@ namespace Avalonia.Media
}
public override string ToString()
- => $"Q {Point1} {Point2}";
+ => FormattableString.Invariant($"Q {Point1} {Point2}");
}
-}
\ No newline at end of file
+}
diff --git a/src/Avalonia.Base/Media/RotateTransform.cs b/src/Avalonia.Base/Media/RotateTransform.cs
index 126bb7c274..3bd409149c 100644
--- a/src/Avalonia.Base/Media/RotateTransform.cs
+++ b/src/Avalonia.Base/Media/RotateTransform.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Rotates an .
+ /// Rotates an .
///
public class RotateTransform : Transform
{
diff --git a/src/Avalonia.Base/Media/ScaleTransform.cs b/src/Avalonia.Base/Media/ScaleTransform.cs
index 259b23cbd2..d4c1a7f993 100644
--- a/src/Avalonia.Base/Media/ScaleTransform.cs
+++ b/src/Avalonia.Base/Media/ScaleTransform.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Scale an .
+ /// Scale an .
///
public class ScaleTransform : Transform
{
diff --git a/src/Avalonia.Base/Media/SkewTransform.cs b/src/Avalonia.Base/Media/SkewTransform.cs
index a96710e331..066f5371c3 100644
--- a/src/Avalonia.Base/Media/SkewTransform.cs
+++ b/src/Avalonia.Base/Media/SkewTransform.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Skews an .
+ /// Skews an .
///
public class SkewTransform : Transform
{
diff --git a/src/Avalonia.Base/Media/Transform.cs b/src/Avalonia.Base/Media/Transform.cs
index 023a8b9cdd..85393ab189 100644
--- a/src/Avalonia.Base/Media/Transform.cs
+++ b/src/Avalonia.Base/Media/Transform.cs
@@ -7,7 +7,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Represents a transform on an .
+ /// Represents a transform on an .
///
public abstract class Transform : Animatable, IMutableTransform
{
diff --git a/src/Avalonia.Base/Media/TranslateTransform.cs b/src/Avalonia.Base/Media/TranslateTransform.cs
index d6d6809f3d..0f910f3600 100644
--- a/src/Avalonia.Base/Media/TranslateTransform.cs
+++ b/src/Avalonia.Base/Media/TranslateTransform.cs
@@ -4,7 +4,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Media
{
///
- /// Translates (moves) an .
+ /// Translates (moves) an .
///
public class TranslateTransform : Transform
{
diff --git a/src/Avalonia.Base/RelativePoint.cs b/src/Avalonia.Base/RelativePoint.cs
index e1fd0093b6..71c6a5cc15 100644
--- a/src/Avalonia.Base/RelativePoint.cs
+++ b/src/Avalonia.Base/RelativePoint.cs
@@ -199,7 +199,7 @@ namespace Avalonia
{
return _unit == RelativeUnit.Absolute ?
_point.ToString() :
- string.Format(CultureInfo.InvariantCulture, "{0}%, {1}%", _point.X * 100, _point.Y * 100);
+ string.Format(CultureInfo.InvariantCulture, "{0}%, {1}%", _point.X * 100, _point.Y * 100);
}
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs b/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
index 06fb526736..2019ad6faa 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
@@ -52,7 +52,7 @@ internal class FpsCounter
_lastFpsUpdate = now;
}
- var fpsLine = $"Frame #{_totalFrames:00000000} FPS: {_fps:000} " + aux;
+ var fpsLine = FormattableString.Invariant($"Frame #{_totalFrames:00000000} FPS: {_fps:000} ") + aux;
double width = 0;
double height = 0;
foreach (var ch in fpsLine)
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
index 5c1ac0312c..f5a46506a3 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
@@ -156,7 +156,7 @@ namespace Avalonia.Rendering.Composition.Server
(Compositor.BatchObjectPool.CurrentUsage + Compositor.BatchObjectPool.CurrentPool) *
Compositor.BatchObjectPool.ArraySize *
IntPtr.Size), false);
- _fpsCounter.RenderFps(targetContext, $"M:{managedMem} / N:{nativeMem} R:{RenderedVisuals:0000}");
+ _fpsCounter.RenderFps(targetContext, FormattableString.Invariant($"M:{managedMem} / N:{nativeMem} R:{RenderedVisuals:0000}"));
}
RenderedVisuals = 0;
diff --git a/src/Avalonia.Base/Rendering/DeferredRenderer.cs b/src/Avalonia.Base/Rendering/DeferredRenderer.cs
index 971702269c..6de2716528 100644
--- a/src/Avalonia.Base/Rendering/DeferredRenderer.cs
+++ b/src/Avalonia.Base/Rendering/DeferredRenderer.cs
@@ -725,7 +725,7 @@ namespace Avalonia.Rendering
foreach (var layer in Layers)
{
- var fileName = Path.Combine(DebugFramesPath ?? string.Empty, $"frame-{id}-layer-{index++}.png");
+ var fileName = Path.Combine(DebugFramesPath ?? string.Empty, FormattableString.Invariant($"frame-{id}-layer-{index++}.png"));
layer.Bitmap.Item.Save(fileName);
}
}
diff --git a/src/Avalonia.Base/Rendering/RendererBase.cs b/src/Avalonia.Base/Rendering/RendererBase.cs
index 90ba60c42a..f0ddbd3626 100644
--- a/src/Avalonia.Base/Rendering/RendererBase.cs
+++ b/src/Avalonia.Base/Rendering/RendererBase.cs
@@ -36,7 +36,7 @@ namespace Avalonia.Rendering
_lastFpsUpdate = now;
}
- var text = layerCount.HasValue ? $"Layers: {layerCount} FPS: {_fps:000}" : $"FPS: {_fps:000}";
+ var text = layerCount.HasValue ? FormattableString.Invariant($"Layers: {layerCount} FPS: {_fps:000}") : FormattableString.Invariant($"FPS: {_fps:000}");
var formattedText = new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, Typeface.Default, s_fontSize, Brushes.White);
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/VisualNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/VisualNode.cs
index 4eec214f4f..a991f2f657 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/VisualNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/VisualNode.cs
@@ -10,7 +10,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Rendering.SceneGraph
{
///
- /// A node in the low-level scene graph representing an .
+ /// A node in the low-level scene graph representing an .
///
internal class VisualNode : IVisualNode
{
diff --git a/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs b/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
index e07534237a..487198a861 100644
--- a/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
+++ b/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
@@ -39,7 +39,7 @@ namespace Avalonia.Styling.Activators
///
/// The listener.
///
- /// This method should not call .
+ /// This method should not call .
///
void Subscribe(IStyleActivatorSink sink);
diff --git a/src/Avalonia.Base/Thickness.cs b/src/Avalonia.Base/Thickness.cs
index da3a98088f..c8e6d7dfd2 100644
--- a/src/Avalonia.Base/Thickness.cs
+++ b/src/Avalonia.Base/Thickness.cs
@@ -277,7 +277,7 @@ namespace Avalonia
/// The string representation of the thickness.
public override string ToString()
{
- return $"{_left},{_top},{_right},{_bottom}";
+ return FormattableString.Invariant($"{_left},{_top},{_right},{_bottom}");
}
///
diff --git a/src/Avalonia.Base/Visual.cs b/src/Avalonia.Base/Visual.cs
index f4fecc7c7a..7694119589 100644
--- a/src/Avalonia.Base/Visual.cs
+++ b/src/Avalonia.Base/Visual.cs
@@ -417,6 +417,7 @@ namespace Avalonia
OnAttachedToVisualTree(e);
AttachedToVisualTree?.Invoke(this, e);
InvalidateVisual();
+ _visualRoot.Renderer?.RecalculateChildren(_visualParent!);
if (ZIndex != 0 && VisualParent is Visual parent)
parent.HasNonUniformZIndexChildren = true;
diff --git a/src/Avalonia.Base/VisualTree/TransformedBounds.cs b/src/Avalonia.Base/VisualTree/TransformedBounds.cs
index 42f93d8edb..c6371d3e28 100644
--- a/src/Avalonia.Base/VisualTree/TransformedBounds.cs
+++ b/src/Avalonia.Base/VisualTree/TransformedBounds.cs
@@ -77,6 +77,6 @@ namespace Avalonia.VisualTree
return !left.Equals(right);
}
- public override string ToString() => $"Bounds: {Bounds} Clip: {Clip} Transform {Transform}";
+ public override string ToString() => FormattableString.Invariant($"Bounds: {Bounds} Clip: {Clip} Transform {Transform}");
}
}
diff --git a/src/Avalonia.Build.Tasks/Extensions.cs b/src/Avalonia.Build.Tasks/Extensions.cs
index 9bedacaf52..b0b7e0cc3d 100644
--- a/src/Avalonia.Build.Tasks/Extensions.cs
+++ b/src/Avalonia.Build.Tasks/Extensions.cs
@@ -5,7 +5,7 @@ namespace Avalonia.Build.Tasks
{
static class Extensions
{
- static string FormatErrorCode(BuildEngineErrorCode code) => $"AVLN:{(int)code:0000}";
+ static string FormatErrorCode(BuildEngineErrorCode code) => FormattableString.Invariant($"AVLN:{(int)code:0000}");
public static void LogError(this IBuildEngine engine, BuildEngineErrorCode code, string file, Exception ex,
int lineNumber = 0, int linePosition = 0)
diff --git a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs
index 38450ea2a2..fad6ad397b 100644
--- a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs
+++ b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs
@@ -67,7 +67,7 @@ namespace Avalonia.Build.Tasks
{
var src = new Source(r.ItemSpec, Root);
- BuildEngine.LogMessage($"avares -> name:{src.Path}, path: {src.SystemPath}, size:{src.Size}, ItemSpec:{r.ItemSpec}", _reportImportance);
+ BuildEngine.LogMessage(FormattableString.Invariant($"avares -> name:{src.Path}, path: {src.SystemPath}, size:{src.Size}, ItemSpec:{r.ItemSpec}"), _reportImportance);
return src;
}).ToList();
diff --git a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs
index aa587bce72..9774b603e8 100644
--- a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs
+++ b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs
@@ -259,7 +259,7 @@ namespace Avalonia.Controls.Primitives
SelectedValue = (int)newSel * Increment + MinimumValue;
_suppressUpdateOffset = false;
- System.Diagnostics.Debug.WriteLine($"Offset: {_offset} ItemHeight: {ItemHeight}");
+ System.Diagnostics.Debug.WriteLine(FormattableString.Invariant($"Offset: {_offset} ItemHeight: {ItemHeight}"));
}
}
diff --git a/src/Avalonia.Controls/Selection/IndexRange.cs b/src/Avalonia.Controls/Selection/IndexRange.cs
index dd3445fb70..3b7830002b 100644
--- a/src/Avalonia.Controls/Selection/IndexRange.cs
+++ b/src/Avalonia.Controls/Selection/IndexRange.cs
@@ -86,7 +86,7 @@ namespace Avalonia.Controls.Selection
return hashCode;
}
- public override string ToString() => $"[{Begin}..{End}]";
+ public override string ToString() => FormattableString.Invariant($"[{Begin}..{End}]");
public static bool operator ==(IndexRange left, IndexRange right) => left.Equals(right);
public static bool operator !=(IndexRange left, IndexRange right) => !(left == right);
diff --git a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs
index f100be5d5b..143980dfa5 100644
--- a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs
+++ b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs
@@ -162,7 +162,7 @@ namespace Avalonia.DesignerSupport.Remote.HtmlTransport
if (sendNow != null && socket != null)
{
await socket.SendMessage(
- $"frame:{sendNow.SequenceId}:{sendNow.Width}:{sendNow.Height}:{sendNow.Stride}:{sendNow.DpiX}:{sendNow.DpiY}");
+ FormattableString.Invariant($"frame:{sendNow.SequenceId}:{sendNow.Width}:{sendNow.Height}:{sendNow.Stride}:{sendNow.DpiX}:{sendNow.DpiY}"));
await socket.SendMessage(false, sendNow.Data);
}
diff --git a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/SimpleWebSocketHttpServer.cs b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/SimpleWebSocketHttpServer.cs
index 6bfae536c9..2d02262aa7 100644
--- a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/SimpleWebSocketHttpServer.cs
+++ b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/SimpleWebSocketHttpServer.cs
@@ -146,7 +146,7 @@ namespace Avalonia.DesignerSupport.Remote.HtmlTransport
public async Task RespondAsync(int code, byte[] data, string contentType)
{
- var headers = Encoding.UTF8.GetBytes($"HTTP/1.1 {code} {(HttpStatusCode)code}\r\nConnection: close\r\nContent-Type: {contentType}\r\nContent-Length: {data.Length}\r\n\r\n");
+ var headers = Encoding.UTF8.GetBytes(FormattableString.Invariant($"HTTP/1.1 {code} {(HttpStatusCode)code}\r\nConnection: close\r\nContent-Type: {contentType}\r\nContent-Length: {data.Length}\r\n\r\n"));
await _stream.WriteAsync(headers, 0, headers.Length);
await _stream.WriteAsync(data, 0, data.Length);
_stream.Dispose();
diff --git a/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs b/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs
index 4a55212de3..e37067d05c 100644
--- a/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs
+++ b/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs
@@ -127,7 +127,7 @@ namespace Avalonia.FreeDesktop
var pid = Process.GetCurrentProcess().Id;
var tid = s_trayIconInstanceId++;
- _sysTrayServiceName = $"org.kde.StatusNotifierItem-{pid}-{tid}";
+ _sysTrayServiceName = FormattableString.Invariant($"org.kde.StatusNotifierItem-{pid}-{tid}");
_statusNotifierItemDbusObj = new StatusNotifierItemDbusObj(_dbusMenuPath);
try
diff --git a/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml b/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml
index 06b6cf30c2..76b51ca819 100644
--- a/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml
@@ -35,13 +35,13 @@
-
+
@@ -70,7 +70,7 @@
-
diff --git a/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml b/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml
index 59fb24663f..9e13e1e996 100644
--- a/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml
@@ -32,14 +32,14 @@
Opacity="0.5" />
-
+
-
diff --git a/src/Browser/Avalonia.Browser/Cursor.cs b/src/Browser/Avalonia.Browser/Cursor.cs
index ec0dcc51b4..7d77f6e0d2 100644
--- a/src/Browser/Avalonia.Browser/Cursor.cs
+++ b/src/Browser/Avalonia.Browser/Cursor.cs
@@ -20,9 +20,9 @@ namespace Avalonia.Browser
///
public CssCursor(string base64, string format, PixelPoint hotspot, StandardCursorType fallback)
{
- Value = $"url(\"data:image/{format};base64,{base64}\") {hotspot.X} {hotspot.Y}, {ToKeyword(fallback)}";
+ Value = FormattableString.Invariant($"url(\"data:image/{format};base64,{base64}\") {hotspot.X} {hotspot.Y}, {ToKeyword(fallback)}");
}
-
+
///
/// Create a cursor from url to *.cur file.
///
@@ -30,15 +30,15 @@ namespace Avalonia.Browser
{
Value = $"url('{url}'), {ToKeyword(fallback)}";
}
-
+
///
/// Create a cursor from png/svg and hotspot position
///
public CssCursor(string url, PixelPoint hotSpot, StandardCursorType fallback)
{
- Value = $"url('{url}') {hotSpot.X} {hotSpot.Y}, {ToKeyword(fallback)}";
+ Value = FormattableString.Invariant($"url('{url}') {hotSpot.X} {hotSpot.Y}, {ToKeyword(fallback)}");
}
-
+
private static string ToKeyword(StandardCursorType type) => type switch
{
StandardCursorType.Hand => "pointer",
@@ -49,16 +49,16 @@ namespace Avalonia.Browser
StandardCursorType.None => "none",
StandardCursorType.Wait => "progress",
StandardCursorType.AppStarting => "wait",
-
+
StandardCursorType.DragMove => "move",
StandardCursorType.DragCopy => "copy",
StandardCursorType.DragLink => "alias",
-
+
StandardCursorType.UpArrow => "default",/*not found matching one*/
StandardCursorType.SizeWestEast => "ew-resize",
StandardCursorType.SizeNorthSouth => "ns-resize",
StandardCursorType.SizeAll => "move",
-
+
StandardCursorType.TopSide => "n-resize",
StandardCursorType.BottomSide => "s-resize",
StandardCursorType.LeftSide => "w-resize",
@@ -67,10 +67,10 @@ namespace Avalonia.Browser
StandardCursorType.TopRightCorner => "ne-resize",
StandardCursorType.BottomLeftCorner => "sw-resize",
StandardCursorType.BottomRightCorner => "se-resize",
-
+
_ => Default,
};
-
+
public void Dispose() {}
}
diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs
index a49a7a36d4..f2eb27e3e8 100644
--- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs
@@ -275,7 +275,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
public int Level { get; }
public override string ToString()
- => $"$parent[{AncestorType?.Name},{Level}]";
+ => FormattableString.Invariant($"$parent[{AncestorType?.Name},{Level}]");
}
internal class VisualAncestorPathElement : ICompiledBindingPathElement, IControlSourceBindingPathElement
@@ -316,7 +316,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
public int[] Indices { get; }
public Type ElementType { get; }
public override string ToString()
- => $"[{string.Join(",", Indices)}]";
+ => FormattableString.Invariant($"[{string.Join(",", Indices)}]");
}
internal class TypeCastPathElement : ITypeCastElement
diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/FindVisualAncestorNode.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/FindVisualAncestorNode.cs
index 8ae6d52b12..45e23db84f 100644
--- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/FindVisualAncestorNode.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/FindVisualAncestorNode.cs
@@ -22,11 +22,11 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
{
if (_ancestorType == null)
{
- return $"$visualparent[{_level}]";
+ return FormattableString.Invariant($"$visualparent[{_level}]");
}
else
{
- return $"$visualparent[{_ancestorType.Name}, {_level}]";
+ return FormattableString.Invariant($"$visualparent[{_ancestorType.Name}, {_level}]");
}
}
}