diff --git a/src/Wpf.Ui.Gallery/App.xaml b/src/Wpf.Ui.Gallery/App.xaml
index 568d2f0a6..02ca8200f 100644
--- a/src/Wpf.Ui.Gallery/App.xaml
+++ b/src/Wpf.Ui.Gallery/App.xaml
@@ -15,6 +15,8 @@
+
+
diff --git a/src/Wpf.Ui.Gallery/App.xaml.cs b/src/Wpf.Ui.Gallery/App.xaml.cs
index 95212d006..4845954fd 100644
--- a/src/Wpf.Ui.Gallery/App.xaml.cs
+++ b/src/Wpf.Ui.Gallery/App.xaml.cs
@@ -24,6 +24,7 @@
using Wpf.Ui.Gallery.Views.Pages.BasicInput;
using Wpf.Ui.Gallery.Views.Pages.Collections;
using Wpf.Ui.Gallery.Views.Pages.DateAndTime;
+using Wpf.Ui.Gallery.Views.Pages.DesignGuidance;
using Wpf.Ui.Gallery.Views.Pages.DialogsAndFlyouts;
using Wpf.Ui.Gallery.Views.Pages.Icons;
using Wpf.Ui.Gallery.Views.Pages.Layout;
@@ -72,6 +73,9 @@ public partial class App : Application
services.AddTransient();
services.AddTransient();
+ //Design guidance
+ services.AddTransient();
+
// Basic Input
services.AddTransient();
services.AddTransient();
diff --git a/src/Wpf.Ui.Gallery/CodeSamples/Typography/TypographySample_xaml.txt b/src/Wpf.Ui.Gallery/CodeSamples/Typography/TypographySample_xaml.txt
new file mode 100644
index 000000000..ac9be9b15
--- /dev/null
+++ b/src/Wpf.Ui.Gallery/CodeSamples/Typography/TypographySample_xaml.txt
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Wpf.Ui.Gallery/Controls/ControlExample.cs b/src/Wpf.Ui.Gallery/Controls/ControlExample.cs
new file mode 100644
index 000000000..702f2c2b7
--- /dev/null
+++ b/src/Wpf.Ui.Gallery/Controls/ControlExample.cs
@@ -0,0 +1,94 @@
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Markup;
+
+namespace Wpf.Ui.Gallery.Controls;
+
+[ContentProperty(nameof(ExampleContent))]
+public class ControlExample : Control
+{
+ public static readonly DependencyProperty ExampleContentProperty =
+ DependencyProperty.Register(nameof(ExampleContent),
+ typeof(object), typeof(ControlExample), new PropertyMetadata(null));
+
+ public static readonly DependencyProperty XamlCodeProperty =
+ DependencyProperty.Register(nameof(XamlCode),
+ typeof(string), typeof(ControlExample), new PropertyMetadata(null));
+
+ public static readonly DependencyProperty XamlCodeSourceProperty =
+ DependencyProperty.Register(nameof(XamlCodeSource),
+ typeof(Uri), typeof(ControlExample),
+ new PropertyMetadata(null,
+ static (o, args) => ((ControlExample)o).OnXamlCodeSourceChanged((Uri)args.NewValue)));
+
+ public static readonly DependencyProperty CsharpCodeProperty =
+ DependencyProperty.Register(nameof(CsharpCode),
+ typeof(string), typeof(ControlExample), new PropertyMetadata(null));
+
+ public static readonly DependencyProperty CsharpCodeSourceProperty =
+ DependencyProperty.Register(nameof(CsharpCodeSource),
+ typeof(Uri), typeof(ControlExample),
+ new PropertyMetadata(null,
+ static (o, args) => ((ControlExample)o).OnCsharpCodeSourceChanged((Uri)args.NewValue)));
+
+ public object? ExampleContent
+ {
+ get => GetValue(ExampleContentProperty);
+ set => SetValue(ExampleContentProperty, value);
+ }
+
+ public string? XamlCode
+ {
+ get => (string)GetValue(XamlCodeProperty);
+ set => SetValue(XamlCodeProperty, value);
+ }
+
+ public Uri? XamlCodeSource
+ {
+ get => (Uri)GetValue(XamlCodeSourceProperty);
+ set => SetValue(XamlCodeSourceProperty, value);
+ }
+
+ public string? CsharpCode
+ {
+ get => (string)GetValue(CsharpCodeProperty);
+ set => SetValue(CsharpCodeProperty, value);
+ }
+
+ public Uri? CsharpCodeSource
+ {
+ get => (Uri)GetValue(CsharpCodeSourceProperty);
+ set => SetValue(CsharpCodeSourceProperty, value);
+ }
+
+ private void OnXamlCodeSourceChanged(Uri uri)
+ {
+ XamlCode = LoadResource(uri);
+ }
+
+ private void OnCsharpCodeSourceChanged(Uri uri)
+ {
+ CsharpCode = LoadResource(uri);
+ }
+
+ private static string LoadResource(Uri uri)
+ {
+ try
+ {
+ if (Application.GetResourceStream(uri) is not { } steamInfo)
+ return string.Empty;
+
+ using StreamReader streamReader = new(steamInfo.Stream, Encoding.UTF8);
+ return streamReader.ReadToEnd();
+
+ }
+ catch (Exception e)
+ {
+ Debug.WriteLine(e);
+ return e.ToString();
+ }
+ }
+}
diff --git a/src/Wpf.Ui.Gallery/Controls/ControlExample.xaml b/src/Wpf.Ui.Gallery/Controls/ControlExample.xaml
new file mode 100644
index 000000000..eaa409154
--- /dev/null
+++ b/src/Wpf.Ui.Gallery/Controls/ControlExample.xaml
@@ -0,0 +1,89 @@
+
+
+
+
+
diff --git a/src/Wpf.Ui.Gallery/Controls/GalleryNavigationPresenter.xaml b/src/Wpf.Ui.Gallery/Controls/GalleryNavigationPresenter.xaml
index 0c29a6fd1..3ecae5e4d 100644
--- a/src/Wpf.Ui.Gallery/Controls/GalleryNavigationPresenter.xaml
+++ b/src/Wpf.Ui.Gallery/Controls/GalleryNavigationPresenter.xaml
@@ -25,15 +25,13 @@
Icon="{Binding Icon, Mode=OneTime}"
IsChevronVisible="True">
-
-
@@ -56,4 +54,4 @@
-
\ No newline at end of file
+
diff --git a/src/Wpf.Ui.Gallery/Controls/TypographyControl.cs b/src/Wpf.Ui.Gallery/Controls/TypographyControl.cs
new file mode 100644
index 000000000..6bee55e95
--- /dev/null
+++ b/src/Wpf.Ui.Gallery/Controls/TypographyControl.cs
@@ -0,0 +1,65 @@
+using System.Windows;
+using System.Windows.Controls;
+
+namespace Wpf.Ui.Gallery.Controls;
+
+public class TypographyControl : Control
+{
+ public static readonly DependencyProperty ExampleProperty =
+ DependencyProperty.Register(nameof(Example),
+ typeof(string), typeof(TypographyControl), new PropertyMetadata(string.Empty));
+
+ public static readonly DependencyProperty ExampleFontTypographyProperty =
+ DependencyProperty.Register(nameof(ExampleFontTypography),
+ typeof(FontTypography), typeof(TypographyControl),
+ new PropertyMetadata(FontTypography.Body,
+ static (o, args) =>
+ ((TypographyControl)o).OnExampleFontTypographyChanged((FontTypography)args.NewValue)));
+
+ public static readonly DependencyProperty VariableFontProperty =
+ DependencyProperty.Register(nameof(VariableFont),
+ typeof(string), typeof(TypographyControl), new PropertyMetadata(string.Empty));
+
+ public static readonly DependencyProperty SizeLinHeightProperty =
+ DependencyProperty.Register(nameof(SizeLinHeight),
+ typeof(string), typeof(TypographyControl), new PropertyMetadata(string.Empty));
+
+ public static readonly DependencyProperty FontTypographyStyleProperty =
+ DependencyProperty.Register(nameof(FontTypographyStyle),
+ typeof(string), typeof(TypographyControl), new PropertyMetadata(FontTypography.Body.ToString()));
+
+ public string Example
+ {
+ get => (string)GetValue(ExampleProperty);
+ set => SetValue(ExampleProperty, value);
+ }
+
+ public FontTypography ExampleFontTypography
+ {
+ get => (FontTypography)GetValue(ExampleFontTypographyProperty);
+ set => SetValue(ExampleFontTypographyProperty, value);
+ }
+
+ public string VariableFont
+ {
+ get => (string)GetValue(VariableFontProperty);
+ set => SetValue(VariableFontProperty, value);
+ }
+
+ public string SizeLinHeight
+ {
+ get => (string)GetValue(VariableFontProperty);
+ set => SetValue(SizeLinHeightProperty, value);
+ }
+
+ public string FontTypographyStyle
+ {
+ get => (string)GetValue(FontTypographyStyleProperty);
+ set => SetValue(FontTypographyStyleProperty, value);
+ }
+
+ private void OnExampleFontTypographyChanged(FontTypography fontTypography)
+ {
+ FontTypographyStyle = fontTypography.ToString();
+ }
+}
diff --git a/src/Wpf.Ui.Gallery/Controls/TypographyControl.xaml b/src/Wpf.Ui.Gallery/Controls/TypographyControl.xaml
new file mode 100644
index 000000000..a398bd240
--- /dev/null
+++ b/src/Wpf.Ui.Gallery/Controls/TypographyControl.xaml
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/src/Wpf.Ui.Gallery/ViewModels/Windows/MainWindowViewModel.cs b/src/Wpf.Ui.Gallery/ViewModels/Windows/MainWindowViewModel.cs
index 9329b1732..1b18e32ab 100644
--- a/src/Wpf.Ui.Gallery/ViewModels/Windows/MainWindowViewModel.cs
+++ b/src/Wpf.Ui.Gallery/ViewModels/Windows/MainWindowViewModel.cs
@@ -11,6 +11,7 @@
using Wpf.Ui.Gallery.Views.Pages.BasicInput;
using Wpf.Ui.Gallery.Views.Pages.Collections;
using Wpf.Ui.Gallery.Views.Pages.DateAndTime;
+using Wpf.Ui.Gallery.Views.Pages.DesignGuidance;
using Wpf.Ui.Gallery.Views.Pages.DialogsAndFlyouts;
using Wpf.Ui.Gallery.Views.Pages.Icons;
using Wpf.Ui.Gallery.Views.Pages.Layout;
@@ -43,9 +44,18 @@ public MainWindowViewModel(IServiceProvider serviceProvider)
_menuItems = new ObservableCollection