diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/App.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/App.xaml
index 6900c4b1e9..d2283fa45c 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/App.xaml
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/App.xaml
@@ -2,12 +2,14 @@
x:Class="Microsoft.PowerToys.Settings.UI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
xmlns:xaml="using:Microsoft.Toolkit.Win32.UI.XamlHost">
+
@@ -23,6 +25,9 @@
+
+
+
\ No newline at end of file
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/CheckBoxWithDescriptionControl.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/CheckBoxWithDescriptionControl.cs
new file mode 100644
index 0000000000..8c728b9150
--- /dev/null
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/CheckBoxWithDescriptionControl.cs
@@ -0,0 +1,72 @@
+// Copyright (c) Microsoft Corporation
+// The Microsoft Corporation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.ComponentModel;
+using Windows.UI.Accessibility;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Automation;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Media;
+
+namespace Microsoft.PowerToys.Settings.UI.Controls
+{
+ public class CheckBoxWithDescriptionControl : CheckBox
+ {
+ private CheckBoxWithDescriptionControl _checkBoxSubTextControl;
+
+ public CheckBoxWithDescriptionControl()
+ {
+ _checkBoxSubTextControl = (CheckBoxWithDescriptionControl)this;
+ this.Loaded += CheckBoxSubTextControl_Loaded;
+ }
+
+ protected override void OnApplyTemplate()
+ {
+ Update();
+ base.OnApplyTemplate();
+ }
+
+ private void Update()
+ {
+ if (!string.IsNullOrEmpty(Header))
+ {
+ AutomationProperties.SetName(this, Header);
+ }
+ }
+
+ private void CheckBoxSubTextControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ StackPanel panel = new StackPanel() { Orientation = Orientation.Vertical };
+ panel.Children.Add(new TextBlock() { Margin = new Thickness(0, 10, 0, 0), Text = Header });
+ panel.Children.Add(new IsEnabledTextBlock() { FontSize = (double)App.Current.Resources["SecondaryTextFontSize"], Foreground = (SolidColorBrush)App.Current.Resources["TextFillColorSecondaryBrush"], Text = Description });
+ _checkBoxSubTextControl.Content = panel;
+ }
+
+ public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(
+ "Header",
+ typeof(string),
+ typeof(CheckBoxWithDescriptionControl),
+ new PropertyMetadata(default(string)));
+
+ public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register(
+ "Description",
+ typeof(object),
+ typeof(CheckBoxWithDescriptionControl),
+ new PropertyMetadata(default(string)));
+
+ [Localizable(true)]
+ public string Header
+ {
+ get => (string)GetValue(HeaderProperty);
+ set => SetValue(HeaderProperty, value);
+ }
+
+ [Localizable(true)]
+ public string Description
+ {
+ get => (string)GetValue(DescriptionProperty);
+ set => SetValue(DescriptionProperty, value);
+ }
+ }
+}
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs
new file mode 100644
index 0000000000..ff090777c8
--- /dev/null
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Corporation
+// The Microsoft Corporation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.ComponentModel;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace Microsoft.PowerToys.Settings.UI.Controls
+{
+ [TemplateVisualState(Name = "Normal", GroupName = "CommonStates")]
+ [TemplateVisualState(Name = "Disabled", GroupName = "CommonStates")]
+ public class IsEnabledTextBlock : Control
+ {
+ public IsEnabledTextBlock()
+ {
+ this.DefaultStyleKey = typeof(IsEnabledTextBlock);
+ }
+
+ protected override void OnApplyTemplate()
+ {
+ IsEnabledChanged -= IsEnabledTextBlock_IsEnabledChanged;
+ SetEnabledState();
+ IsEnabledChanged += IsEnabledTextBlock_IsEnabledChanged;
+ base.OnApplyTemplate();
+ }
+
+ public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
+ "Text",
+ typeof(string),
+ typeof(IsEnabledTextBlock),
+ null);
+
+ [Localizable(true)]
+ public string Text
+ {
+ get => (string)GetValue(TextProperty);
+ set => SetValue(TextProperty, value);
+ }
+
+ private void IsEnabledTextBlock_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
+ {
+ SetEnabledState();
+ }
+
+ private void SetEnabledState()
+ {
+ VisualStateManager.GoToState(this, IsEnabled ? "Normal" : "Disabled", true);
+ }
+ }
+}
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.xaml
new file mode 100644
index 0000000000..080637d6da
--- /dev/null
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/IsEnabledTextBlock/IsEnabledTextBlock.xaml
@@ -0,0 +1,34 @@
+
+
+
+
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml
deleted file mode 100644
index 7733a34b35..0000000000
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml.cs
deleted file mode 100644
index 66f89bbde2..0000000000
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Controls/TextBlockControl.xaml.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) Microsoft Corporation
-// The Microsoft Corporation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.ComponentModel;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Microsoft.PowerToys.Settings.UI.Controls
-{
- public sealed partial class TextBlockControl : UserControl
- {
- public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
- "Text",
- typeof(string),
- typeof(TextBlockControl),
- null);
-
- [Localizable(true)]
- public string Text
- {
- get => (string)GetValue(TextProperty);
- set => SetValue(TextProperty, value);
- }
-
- public static readonly DependencyProperty EnabledForegroundProperty = DependencyProperty.Register(
- "EnabledForeground",
- typeof(Brush),
- typeof(TextBlockControl),
- null);
-
- public Brush EnabledForeground
- {
- get => (Brush)GetValue(EnabledForegroundProperty);
- set => SetValue(EnabledForegroundProperty, value);
- }
-
- public static readonly DependencyProperty DisabledForegroundProperty = DependencyProperty.Register(
- "DisabledForeground",
- typeof(Brush),
- typeof(TextBlockControl),
- null);
-
- public Brush DisabledForeground
- {
- get => (Brush)GetValue(DisabledForegroundProperty);
- set => SetValue(DisabledForegroundProperty, value);
- }
-
- public TextBlockControl()
- {
- this.InitializeComponent();
- DataContext = this;
-
- IsEnabledChanged += TextBlockControl_IsEnabledChanged;
- }
-
- private void TextBlockControl_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
- {
- if ((bool)e.NewValue)
- {
- textBlock.Foreground = EnabledForeground;
- }
- else
- {
- textBlock.Foreground = DisabledForeground;
- }
- }
-
- private void TextBlock_Loaded(object sender, RoutedEventArgs e)
- {
- textBlock.Foreground = IsEnabled ? EnabledForeground : DisabledForeground;
- }
- }
-}
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Microsoft.PowerToys.Settings.UI.csproj b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Microsoft.PowerToys.Settings.UI.csproj
index b798b3f676..32924752b5 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Microsoft.PowerToys.Settings.UI.csproj
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Microsoft.PowerToys.Settings.UI.csproj
@@ -95,6 +95,8 @@
+
+
ShortcutControl.xaml
@@ -116,9 +118,6 @@
OOBEPageControl.xaml
-
- TextBlockControl.xaml
-
@@ -303,9 +302,13 @@
-
+
+
+ Designer
+ MSBuild:Compile
+
MSBuild:Compile
Designer
@@ -338,10 +341,6 @@
Designer
MSBuild:Compile
-
- Designer
- MSBuild:Compile
-
MSBuild:Compile
Designer
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw
index 05481e4593..6a22e1ab88 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw
@@ -401,8 +401,11 @@
Ignore shortcuts in fullscreen mode
-
- Use centralized keyboard hook (try it if there are issues with the shortcut)
+
+ Use centralized keyboard hook
+
+
+ Try this if there are issues with the shortcut
Clear the previous query on launch
@@ -913,7 +916,7 @@
Made with 💗 by Microsoft and the PowerToys community.
Windows refers to the OS
-
+
Allow zones to span across monitors
@@ -1627,7 +1630,7 @@ From there, simply click on a Markdown file, PDF file or SVG icon in the File Ex
Only shortcuts that start with **Windows key**, **Ctrl**, **Alt** or **Shift** are valid.
-
+
All monitors must have the same DPI scaling and will be treated as one large combined rectangle which contains all monitors
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/Generic.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/Generic.xaml
index c1f16179e8..8629816d97 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/Generic.xaml
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/Generic.xaml
@@ -5,5 +5,6 @@
+
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/SettingsExpanderStyles.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/SettingsExpanderStyles.xaml
index 9c6b088c91..f56e2adfa9 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/SettingsExpanderStyles.xaml
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Themes/SettingsExpanderStyles.xaml
@@ -34,7 +34,6 @@
-