diff --git a/build/PackageDiffIgnore.xml b/build/PackageDiffIgnore.xml
index 842b956bed03..402975ccdcc5 100644
--- a/build/PackageDiffIgnore.xml
+++ b/build/PackageDiffIgnore.xml
@@ -2940,6 +2940,9 @@
+
+
+
@@ -2957,6 +2960,11 @@
+
+
+
+
+
/// Gets or sets the name of the element to use as the binding source for the Binding.
///
- /// The name of the element, or an ElementNameSubject instance that can be used to monitor the element name instance changes.
- public object ElementName { get; set; }
+ /// The name of the element.
+ public string ElementName { get; set; }
+
+ ///
+ /// Routes the availability of the element instance for a late-bound ElementName binding.
+ ///
+ ///
+ /// Uno-only seam set by the XAML code generator and runtime reader. It must be public
+ /// because the compiled-XAML output lives in the consuming assembly, which has no access
+ /// to Uno.UI internals (same rationale as ).
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public ElementNameSubject ElementNameSubject { get; set; }
///
/// Gets or sets the value to use when the binding is unable to return a value.
diff --git a/src/Uno.UI/UI/Xaml/DependencyPropertyDetailsCollection.cs b/src/Uno.UI/UI/Xaml/DependencyPropertyDetailsCollection.cs
index 4c1f4513ae54..60cd23879c4a 100644
--- a/src/Uno.UI/UI/Xaml/DependencyPropertyDetailsCollection.cs
+++ b/src/Uno.UI/UI/Xaml/DependencyPropertyDetailsCollection.cs
@@ -75,6 +75,7 @@ internal void CloneToForHotReload(DependencyPropertyDetailsCollection other, Dep
newBinding.Mode = binding.Mode;
newBinding.TargetNullValue = binding.TargetNullValue;
newBinding.ElementName = binding.ElementName;
+ newBinding.ElementNameSubject = binding.ElementNameSubject;
newBinding.FallbackValue = binding.FallbackValue;
if (binding.RelativeSource is { } relativeSource)
{
diff --git a/src/Uno.UI/UI/Xaml/Markup/Reader/XamlObjectBuilder.cs b/src/Uno.UI/UI/Xaml/Markup/Reader/XamlObjectBuilder.cs
index 28fd855d4576..9f146d934edc 100644
--- a/src/Uno.UI/UI/Xaml/Markup/Reader/XamlObjectBuilder.cs
+++ b/src/Uno.UI/UI/Xaml/Markup/Reader/XamlObjectBuilder.cs
@@ -1202,7 +1202,7 @@ private Binding BuildBindingExpression(object? instance, object? rootInstance, X
case nameof(Binding.ElementName):
var subject = new ElementNameSubject();
- binding.ElementName = subject;
+ binding.ElementNameSubject = subject;
if (bindingProperty.Value?.ToString() is { } value)
{
diff --git a/src/Uno.UI/UI/Xaml/Media/Animation/DoubleAnimation.cs b/src/Uno.UI/UI/Xaml/Media/Animation/DoubleAnimation.cs
index c2330c79902a..fbe43dffd1dc 100644
--- a/src/Uno.UI/UI/Xaml/Media/Animation/DoubleAnimation.cs
+++ b/src/Uno.UI/UI/Xaml/Media/Animation/DoubleAnimation.cs
@@ -58,9 +58,9 @@ public bool EnableDependentAnimation
public static DependencyProperty EnableDependentAnimationProperty { get; } =
DependencyProperty.Register("EnableDependentAnimation", typeof(bool), typeof(DoubleAnimation), new FrameworkPropertyMetadata(false));
- public IEasingFunction EasingFunction
+ public EasingFunctionBase EasingFunction
{
- get => (IEasingFunction)GetValue(EasingFunctionProperty);
+ get => (EasingFunctionBase)GetValue(EasingFunctionProperty);
set => SetValue(EasingFunctionProperty, value);
}
@@ -73,7 +73,7 @@ public IEasingFunction EasingFunction
float? IAnimation.By => (float?)By;
public static DependencyProperty EasingFunctionProperty { get; } =
- DependencyProperty.Register("EasingFunction", typeof(IEasingFunction), typeof(DoubleAnimation), new FrameworkPropertyMetadata(null));
+ DependencyProperty.Register("EasingFunction", typeof(EasingFunctionBase), typeof(DoubleAnimation), new FrameworkPropertyMetadata(null));
void ITimeline.Begin() => _animationImplementation.Begin();
diff --git a/src/Uno.WinAppSDKSyncGenerator/Helpers/SymbolMatchingHelpers.cs b/src/Uno.WinAppSDKSyncGenerator/Helpers/SymbolMatchingHelpers.cs
index f01fa6f03141..5f0762b0669f 100644
--- a/src/Uno.WinAppSDKSyncGenerator/Helpers/SymbolMatchingHelpers.cs
+++ b/src/Uno.WinAppSDKSyncGenerator/Helpers/SymbolMatchingHelpers.cs
@@ -223,13 +223,7 @@ private static bool ArePropertiesMatching(IPropertySymbol uapProperty, IProperty
// Property type of ContentTemplateRoot is diverging from UWP.
// In Uno we use the native view for each platform Android.Views.View, UIKit.UIView, AppKit.NSView
- if (!AreMatching(uapProperty.Type, unoProperty.Type) && uapProperty.Name != "ContentTemplateRoot" &&
- // object vs UIElement
- uapProperty.Name != "Content" &&
- // IEasingFunction vs EasingFunctionBase
- uapProperty.Name != "EasingFunction" &&
- // string vs object
- uapProperty.Name != "ElementName")
+ if (!AreMatching(uapProperty.Type, unoProperty.Type) && uapProperty.Name != "ContentTemplateRoot")
{
return false;
}