diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml
new file mode 100644
index 000000000..1ce718e01
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml.cs
new file mode 100644
index 000000000..8483efa21
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/SliderDemo.axaml.cs
@@ -0,0 +1,9 @@
+namespace HandyControlDemo.UserControl;
+
+public partial class SliderDemo : Avalonia.Controls.UserControl
+{
+ public SliderDemo()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControl_Avalonia/Controls/Attach/ContentControlAttach.cs b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/ContentControlAttach.cs
new file mode 100644
index 000000000..6bdbbe919
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/ContentControlAttach.cs
@@ -0,0 +1,49 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Data;
+
+namespace HandyControl.Controls;
+
+public class ContentControlAttach
+{
+ public static readonly AttachedProperty ContentStringFormatProperty =
+ AvaloniaProperty.RegisterAttached("ContentStringFormat");
+
+ public static void SetContentStringFormat(AvaloniaObject element, string value) =>
+ element.SetValue(ContentStringFormatProperty, value);
+
+ public static string GetContentStringFormat(AvaloniaObject element) =>
+ element.GetValue(ContentStringFormatProperty);
+
+ public static readonly AttachedProperty