From 6564c4cf82497bd5afea79a1e664c57ea9a56862 Mon Sep 17 00:00:00 2001 From: mzy666888 Date: Wed, 20 Nov 2024 16:49:28 +0800 Subject: [PATCH 1/4] =?UTF-8?q?RadioButton=20=E6=B7=BB=E5=8A=A0=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=A4=A7=E5=B0=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaterialDesign3.Demo.Wpf/Toggles.xaml | 6 +++++ .../RadioButtonAssist.cs | 23 +++++++++++++++++++ .../MaterialDesignTheme.RadioButton.xaml | 6 ++--- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs diff --git a/src/MaterialDesign3.Demo.Wpf/Toggles.xaml b/src/MaterialDesign3.Demo.Wpf/Toggles.xaml index a25532388b..a0deea4d91 100644 --- a/src/MaterialDesign3.Demo.Wpf/Toggles.xaml +++ b/src/MaterialDesign3.Demo.Wpf/Toggles.xaml @@ -116,6 +116,12 @@ + + + + diff --git a/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs b/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs new file mode 100644 index 0000000000..c36cf7e677 --- /dev/null +++ b/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs @@ -0,0 +1,23 @@ +namespace MaterialDesignThemes.Wpf +{ + public class RadioButtonAssist + { + private const double DefaultRadioButtonSize = 18.0; + + #region AttachedProperty : RadioButtonSizeProperty + public static readonly DependencyProperty RadioButtonSizeProperty = + DependencyProperty.RegisterAttached( + "RadioButtonSize", + typeof(double), + typeof(RadioButtonAssist), + new PropertyMetadata(DefaultRadioButtonSize) + ); + + public static double GetRadioButtonSize(RadioButton element) => + (double)element.GetValue(RadioButtonSizeProperty); + + public static void SetRadioButtonSize(RadioButton element, double checkBoxSize) => + element.SetValue(RadioButtonSizeProperty, checkBoxSize); + #endregion + } +} diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml index ffa9c8bfc4..1618bae56e 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml @@ -78,9 +78,9 @@ - + Date: Wed, 20 Nov 2024 21:10:51 -0800 Subject: [PATCH 2/4] Adding sample to normal WPF demo app as well --- src/MainDemo.Wpf/Toggles.xaml | 92 +++-------------------------------- 1 file changed, 7 insertions(+), 85 deletions(-) diff --git a/src/MainDemo.Wpf/Toggles.xaml b/src/MainDemo.Wpf/Toggles.xaml index 9bef69c3fa..b608c89285 100644 --- a/src/MainDemo.Wpf/Toggles.xaml +++ b/src/MainDemo.Wpf/Toggles.xaml @@ -214,6 +214,13 @@ IsChecked="True" Style="{StaticResource MaterialDesignSecondaryRadioButton}" /> + + + + + @@ -270,31 +277,6 @@ - - - - - - - - - - - - - - - - - - - @@ -472,64 +452,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From db466c2086d8b435d9685282bb90ae4366f7e80f Mon Sep 17 00:00:00 2001 From: mzy666888 Date: Tue, 17 Dec 2024 10:15:08 +0800 Subject: [PATCH 3/4] the MaterialDesignUserForegroundCheckBox style for custom checkboxsize --- .../Themes/MaterialDesignTheme.CheckBox.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml index c80c8954e3..babbeef780 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml @@ -242,8 +242,8 @@ - From a9beaaa3b75d3c4f31c3d5412580f73cbd7b020b Mon Sep 17 00:00:00 2001 From: mzy666888 Date: Tue, 21 Jan 2025 11:47:58 +0800 Subject: [PATCH 4/4] RadioButton and CheckBox use custom foreground --- src/MaterialDesign3.Demo.Wpf/Toggles.xaml | 12 +++++- .../CheckBoxAssist.cs | 27 ++++++++++++- .../RadioButtonAssist.cs | 38 +++++++++++++------ .../Themes/MaterialDesignTheme.CheckBox.xaml | 12 +++--- .../MaterialDesignTheme.RadioButton.xaml | 11 +++--- 5 files changed, 74 insertions(+), 26 deletions(-) diff --git a/src/MaterialDesign3.Demo.Wpf/Toggles.xaml b/src/MaterialDesign3.Demo.Wpf/Toggles.xaml index a0deea4d91..b80ed4f304 100644 --- a/src/MaterialDesign3.Demo.Wpf/Toggles.xaml +++ b/src/MaterialDesign3.Demo.Wpf/Toggles.xaml @@ -119,7 +119,12 @@ - + + + + - + diff --git a/src/MaterialDesignThemes.Wpf/CheckBoxAssist.cs b/src/MaterialDesignThemes.Wpf/CheckBoxAssist.cs index 529a1a293c..8b3d9d8001 100644 --- a/src/MaterialDesignThemes.Wpf/CheckBoxAssist.cs +++ b/src/MaterialDesignThemes.Wpf/CheckBoxAssist.cs @@ -1,3 +1,5 @@ +using System.Windows.Media; + namespace MaterialDesignThemes.Wpf; public class CheckBoxAssist @@ -5,10 +7,31 @@ public class CheckBoxAssist private const double DefaultCheckBoxSize = 18.0; #region AttachedProperty : CheckBoxSizeProperty - public static readonly DependencyProperty CheckBoxSizeProperty - = DependencyProperty.RegisterAttached("CheckBoxSize", typeof(double), typeof(CheckBoxAssist), new PropertyMetadata(DefaultCheckBoxSize)); + public static readonly DependencyProperty CheckBoxSizeProperty = DependencyProperty.RegisterAttached( + "CheckBoxSize", + typeof(double), + typeof(CheckBoxAssist), + new PropertyMetadata(DefaultCheckBoxSize) + ); public static double GetCheckBoxSize(CheckBox element) => (double)element.GetValue(CheckBoxSizeProperty); + public static void SetCheckBoxSize(CheckBox element, double checkBoxSize) => element.SetValue(CheckBoxSizeProperty, checkBoxSize); #endregion + + + + #region AttachedProperty : CheckBoxForegroundProperty + public static readonly DependencyProperty CheckBoxForegroundProperty = DependencyProperty.RegisterAttached( + "CheckBoxForeground", + typeof(Brush), + typeof(CheckBoxAssist), + null + ); + + public static Brush GetCheckBoxForeground(CheckBox element) => (Brush)element.GetValue(CheckBoxForegroundProperty); + + public static void SetCheckBoxForeground(CheckBox element, Brush checkBoxForeground) => + element.SetValue(CheckBoxForegroundProperty, checkBoxForeground); + #endregion } diff --git a/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs b/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs index c36cf7e677..52d17be942 100644 --- a/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs +++ b/src/MaterialDesignThemes.Wpf/RadioButtonAssist.cs @@ -1,23 +1,37 @@ -namespace MaterialDesignThemes.Wpf +using System.Windows.Media; + +namespace MaterialDesignThemes.Wpf { public class RadioButtonAssist { private const double DefaultRadioButtonSize = 18.0; #region AttachedProperty : RadioButtonSizeProperty - public static readonly DependencyProperty RadioButtonSizeProperty = - DependencyProperty.RegisterAttached( - "RadioButtonSize", - typeof(double), - typeof(RadioButtonAssist), - new PropertyMetadata(DefaultRadioButtonSize) - ); + public static readonly DependencyProperty RadioButtonSizeProperty = DependencyProperty.RegisterAttached( + "RadioButtonSize", + typeof(double), + typeof(RadioButtonAssist), + new PropertyMetadata(DefaultRadioButtonSize) + ); + + public static double GetRadioButtonSize(RadioButton element) => (double)element.GetValue(RadioButtonSizeProperty); + + public static void SetRadioButtonSize(RadioButton element, double RadioButtonSize) => + element.SetValue(RadioButtonSizeProperty, RadioButtonSize); + #endregion + + #region AttachedProperty :RadioButtonForegroundProperty + public static readonly DependencyProperty RadioButtonForegroundProperty = DependencyProperty.RegisterAttached( + "RadioButtonForeground", + typeof(Brush), + typeof(RadioButtonAssist), + null + ); - public static double GetRadioButtonSize(RadioButton element) => - (double)element.GetValue(RadioButtonSizeProperty); + public static Brush GetRadioButtonForeground(RadioButton element) => (Brush)element.GetValue(RadioButtonForegroundProperty); - public static void SetRadioButtonSize(RadioButton element, double checkBoxSize) => - element.SetValue(RadioButtonSizeProperty, checkBoxSize); + public static void SetRadioButtonForeground(RadioButton element, Brush radioButtonForeground) => + element.SetValue(RadioButtonForegroundProperty, radioButtonForeground); #endregion } } diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml index 281366a6e7..7d105b325f 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml @@ -70,6 +70,7 @@ + @@ -111,13 +112,13 @@ + Fill="{Binding RelativeSource={RelativeSource TemplatedParent} ,Path=(wpf:CheckBoxAssist.CheckBoxForeground)}" /> @@ -158,7 +159,7 @@ - + @@ -205,6 +206,7 @@ + @@ -246,13 +248,13 @@ + Fill="{Binding RelativeSource={RelativeSource TemplatedParent} ,Path=(wpf:CheckBoxAssist.CheckBoxForeground)}" /> diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml index 00df04c542..fd5a507d9d 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml @@ -41,6 +41,7 @@ + @@ -81,14 +82,14 @@ + Fill="{Binding RelativeSource={RelativeSource TemplatedParent} ,Path=(wpf:RadioButtonAssist.RadioButtonForeground)}" /> @@ -126,7 +127,7 @@ - + @@ -209,14 +210,14 @@ + Fill="{Binding RelativeSource={RelativeSource TemplatedParent} ,Path=(wpf:RadioButtonAssist.RadioButtonForeground)}" />