diff --git a/src/Avalonia.Base/AvaloniaObject.cs b/src/Avalonia.Base/AvaloniaObject.cs
index 4580ef6c58..35e189e6a4 100644
--- a/src/Avalonia.Base/AvaloniaObject.cs
+++ b/src/Avalonia.Base/AvaloniaObject.cs
@@ -436,7 +436,7 @@ namespace Avalonia
/// Gets all priority values set on the object.
///
/// A collection of property/value tuples.
- internal IDictionary GetSetValues() => Values?.GetSetValues();
+ internal IDictionary GetSetValues() => Values?.GetSetValues();
///
/// Forces revalidation of properties when a property value changes.
diff --git a/src/Avalonia.Base/Diagnostics/AvaloniaObjectExtensions.cs b/src/Avalonia.Base/Diagnostics/AvaloniaObjectExtensions.cs
index f44f9043f0..7afbcabd2a 100644
--- a/src/Avalonia.Base/Diagnostics/AvaloniaObjectExtensions.cs
+++ b/src/Avalonia.Base/Diagnostics/AvaloniaObjectExtensions.cs
@@ -23,15 +23,24 @@ namespace Avalonia.Diagnostics
{
var set = o.GetSetValues();
- PriorityValue value;
-
- if (set.TryGetValue(property, out value))
+ if (set.TryGetValue(property, out var obj))
{
- return new AvaloniaPropertyValue(
- property,
- o.GetValue(property),
- (BindingPriority)value.ValuePriority,
- value.GetDiagnostic());
+ if (obj is PriorityValue value)
+ {
+ return new AvaloniaPropertyValue(
+ property,
+ o.GetValue(property),
+ (BindingPriority)value.ValuePriority,
+ value.GetDiagnostic());
+ }
+ else
+ {
+ return new AvaloniaPropertyValue(
+ property,
+ obj,
+ BindingPriority.LocalValue,
+ "Local value");
+ }
}
else
{
diff --git a/src/Avalonia.Base/ValueStore.cs b/src/Avalonia.Base/ValueStore.cs
index c8e2124182..ab80e74923 100644
--- a/src/Avalonia.Base/ValueStore.cs
+++ b/src/Avalonia.Base/ValueStore.cs
@@ -100,7 +100,7 @@ namespace Avalonia
_owner.PriorityValueChanged(property, priority, oldValue, newValue);
}
- public IDictionary GetSetValues() => throw new NotImplementedException();
+ public IDictionary GetSetValues() => _values;
public object GetValue(AvaloniaProperty property)
{