From 2e0183b78ade1684477316ee57f91ac7c41f0b0b Mon Sep 17 00:00:00 2001 From: Nicolai Henriksen Date: Fri, 24 Apr 2026 15:11:17 +0200 Subject: [PATCH 1/2] Introduce BindingProxy to mitigate temporary XAML binding failures --- src/MaterialDesignThemes.Wpf/BindingProxy.cs | 15 +++++++++++++++ .../Themes/MaterialDesignTheme.ProgressBar.xaml | 15 +++++++++------ .../Themes/MaterialDesignTheme.Slider.xaml | 10 ++++++++-- 3 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/MaterialDesignThemes.Wpf/BindingProxy.cs diff --git a/src/MaterialDesignThemes.Wpf/BindingProxy.cs b/src/MaterialDesignThemes.Wpf/BindingProxy.cs new file mode 100644 index 0000000000..997fb4e4a0 --- /dev/null +++ b/src/MaterialDesignThemes.Wpf/BindingProxy.cs @@ -0,0 +1,15 @@ +namespace MaterialDesignThemes.Wpf; + +public class BindingProxy : Freezable +{ + protected override Freezable CreateInstanceCore() => new BindingProxy(); + + public static readonly DependencyProperty DataProperty = + DependencyProperty.Register(nameof(Data), typeof(object), typeof(BindingProxy), new PropertyMetadata(null)); + + public object? Data + { + get => GetValue(DataProperty); + set => SetValue(DataProperty, value); + } +} diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml index 4ad30d2d68..ce97e89437 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml @@ -173,6 +173,9 @@ + + + @@ -184,11 +187,11 @@ StrokeThickness="3"> - - + + - + @@ -196,10 +199,10 @@ - + - + @@ -212,7 +215,7 @@ - + diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Slider.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Slider.xaml index 03128d77b9..bcf766225c 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Slider.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Slider.xaml @@ -267,10 +267,13 @@ IsHitTestVisible="False" RenderTransformOrigin="0.5,1" Visibility="Collapsed"> + + + - + @@ -479,10 +482,13 @@ IsHitTestVisible="False" RenderTransformOrigin="1,0.5" Visibility="Collapsed"> + + + - + From b8eb1886bcfedd2d51ab2a671368a7037b8d560a Mon Sep 17 00:00:00 2001 From: Kevin Bost Date: Thu, 30 Apr 2026 21:57:44 -0700 Subject: [PATCH 2/2] Internalize BindingProxy and seal the class Moves `BindingProxy` to the `MaterialDesignThemes.Wpf.Internal` namespace and marks it as `sealed`. This change clarifies that `BindingProxy` is an internal implementation detail of the library, preventing direct external usage or inheritance and helping to maintain a cleaner public API surface. Relates to #3814 --- src/MaterialDesignThemes.Wpf/{ => Internal}/BindingProxy.cs | 4 ++-- .../Themes/MaterialDesignTheme.ProgressBar.xaml | 3 ++- .../Themes/MaterialDesignTheme.Slider.xaml | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) rename src/MaterialDesignThemes.Wpf/{ => Internal}/BindingProxy.cs (80%) diff --git a/src/MaterialDesignThemes.Wpf/BindingProxy.cs b/src/MaterialDesignThemes.Wpf/Internal/BindingProxy.cs similarity index 80% rename from src/MaterialDesignThemes.Wpf/BindingProxy.cs rename to src/MaterialDesignThemes.Wpf/Internal/BindingProxy.cs index 997fb4e4a0..d80010800a 100644 --- a/src/MaterialDesignThemes.Wpf/BindingProxy.cs +++ b/src/MaterialDesignThemes.Wpf/Internal/BindingProxy.cs @@ -1,6 +1,6 @@ -namespace MaterialDesignThemes.Wpf; +namespace MaterialDesignThemes.Wpf.Internal; -public class BindingProxy : Freezable +public sealed class BindingProxy : Freezable { protected override Freezable CreateInstanceCore() => new BindingProxy(); diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml index ce97e89437..2dda60a645 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ProgressBar.xaml @@ -2,6 +2,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:circularProgressBarConverters="clr-namespace:MaterialDesignThemes.Wpf.Converters.CircularProgressBar" xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters" + xmlns:internal="clr-namespace:MaterialDesignThemes.Wpf.Internal" xmlns:transitions="clr-namespace:MaterialDesignThemes.Wpf.Transitions" xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf"> @@ -174,7 +175,7 @@ - + @@ -268,7 +269,7 @@ RenderTransformOrigin="0.5,1" Visibility="Collapsed"> - + @@ -483,7 +484,7 @@ RenderTransformOrigin="1,0.5" Visibility="Collapsed"> - +