diff --git a/api/Avalonia.Skia.nupkg.xml b/api/Avalonia.Skia.nupkg.xml
new file mode 100644
index 0000000000..eda59fc334
--- /dev/null
+++ b/api/Avalonia.Skia.nupkg.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ CP0008
+ T:Avalonia.Skia.ISkiaGpu
+ baseline/Avalonia.Skia/lib/net10.0/Avalonia.Skia.dll
+ current/Avalonia.Skia/lib/net10.0/Avalonia.Skia.dll
+
+
+ CP0008
+ T:Avalonia.Skia.ISkiaGpuWithPlatformGraphicsContext
+ baseline/Avalonia.Skia/lib/net10.0/Avalonia.Skia.dll
+ current/Avalonia.Skia/lib/net10.0/Avalonia.Skia.dll
+
+
+ CP0008
+ T:Avalonia.Skia.ISkiaGpu
+ baseline/Avalonia.Skia/lib/net8.0/Avalonia.Skia.dll
+ current/Avalonia.Skia/lib/net8.0/Avalonia.Skia.dll
+
+
+ CP0008
+ T:Avalonia.Skia.ISkiaGpuWithPlatformGraphicsContext
+ baseline/Avalonia.Skia/lib/net8.0/Avalonia.Skia.dll
+ current/Avalonia.Skia/lib/net8.0/Avalonia.Skia.dll
+
+
diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml
index 1f49b5fa24..5a424cb8ee 100644
--- a/api/Avalonia.nupkg.xml
+++ b/api/Avalonia.nupkg.xml
@@ -19,12 +19,24 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.IOptionalFeatureProvider
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Platform.IReadableBitmapWithAlphaImpl
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.OptionalFeatureProviderExtensions
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Utilities.StringTokenizer
@@ -49,6 +61,12 @@
baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+ CP0001
+ T:Avalonia.Markup.Xaml.ConstructorArgumentAttribute
+ baseline/Avalonia/lib/net10.0/Avalonia.Markup.Xaml.dll
+ current/Avalonia/lib/net10.0/Avalonia.Markup.Xaml.dll
+
CP0001
T:Avalonia.Media.Fonts.FontFamilyLoader
@@ -73,12 +91,24 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.IOptionalFeatureProvider
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Platform.IReadableBitmapWithAlphaImpl
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.OptionalFeatureProviderExtensions
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Utilities.StringTokenizer
@@ -103,6 +133,12 @@
baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+ CP0001
+ T:Avalonia.Markup.Xaml.ConstructorArgumentAttribute
+ baseline/Avalonia/lib/net8.0/Avalonia.Markup.Xaml.dll
+ current/Avalonia/lib/net8.0/Avalonia.Markup.Xaml.dll
+
CP0001
T:Avalonia.Media.Fonts.FontFamilyLoader
@@ -133,6 +169,12 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Data.ReflectionBinding.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0002
M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers)
@@ -499,6 +541,18 @@
baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+ CP0002
+ M:Avalonia.Data.Binding.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net10.0/Avalonia.Markup.dll
+ current/Avalonia/lib/net10.0/Avalonia.Markup.dll
+
+
+ CP0002
+ M:Avalonia.Markup.Xaml.MarkupExtensions.ReflectionBindingExtension.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net10.0/Avalonia.Markup.Xaml.dll
+ current/Avalonia/lib/net10.0/Avalonia.Markup.Xaml.dll
+
CP0002
F:Avalonia.Media.Fonts.FontCollectionBase._glyphTypefaceCache
@@ -553,6 +607,12 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Data.ReflectionBinding.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0002
M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers)
@@ -925,6 +985,18 @@
baseline/Avalonia/lib/net8.0/Avalonia.Dialogs.dll
current/Avalonia/lib/net8.0/Avalonia.Dialogs.dll
+
+ CP0002
+ M:Avalonia.Data.Binding.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net8.0/Avalonia.Markup.dll
+ current/Avalonia/lib/net8.0/Avalonia.Markup.dll
+
+
+ CP0002
+ M:Avalonia.Markup.Xaml.MarkupExtensions.ReflectionBindingExtension.#ctor(System.String,Avalonia.Data.BindingMode)
+ baseline/Avalonia/lib/net8.0/Avalonia.Markup.Xaml.dll
+ current/Avalonia/lib/net8.0/Avalonia.Markup.Xaml.dll
+
CP0002
F:Avalonia.Media.Fonts.FontCollectionBase._glyphTypefaceCache
@@ -1285,30 +1357,222 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0008
+ T:Avalonia.Media.ImmediateDrawingContext
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0008
T:Avalonia.Media.StreamGeometryContext
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0008
+ T:Avalonia.Platform.IPlatformGraphicsContext
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPlatformGraphicsWithFeatures
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPlatformRenderInterfaceContext
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0008
T:Avalonia.Platform.IWriteableBitmapImpl
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0008
+ T:Avalonia.Application
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Controls.Platform.IWin32OptionsTopLevelImpl
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPopupImpl
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.ITopLevelImpl
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IWindowBaseImpl
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IWindowImpl
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Metal.IMetalDevice
+ baseline/Avalonia/lib/net10.0/Avalonia.Metal.dll
+ current/Avalonia/lib/net10.0/Avalonia.Metal.dll
+
+
+ CP0008
+ T:Avalonia.OpenGL.Egl.EglContext
+ baseline/Avalonia/lib/net10.0/Avalonia.OpenGL.dll
+ current/Avalonia/lib/net10.0/Avalonia.OpenGL.dll
+
+
+ CP0008
+ T:Avalonia.OpenGL.IGlContext
+ baseline/Avalonia/lib/net10.0/Avalonia.OpenGL.dll
+ current/Avalonia/lib/net10.0/Avalonia.OpenGL.dll
+
+
+ CP0008
+ T:Avalonia.Vulkan.IVulkanDevice
+ baseline/Avalonia/lib/net10.0/Avalonia.Vulkan.dll
+ current/Avalonia/lib/net10.0/Avalonia.Vulkan.dll
+
+
+ CP0008
+ T:Avalonia.Vulkan.IVulkanPlatformGraphicsContext
+ baseline/Avalonia/lib/net10.0/Avalonia.Vulkan.dll
+ current/Avalonia/lib/net10.0/Avalonia.Vulkan.dll
+
+
+ CP0008
+ T:Avalonia.Media.ImmediateDrawingContext
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0008
T:Avalonia.Media.StreamGeometryContext
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0008
+ T:Avalonia.Platform.IPlatformGraphicsContext
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPlatformGraphicsWithFeatures
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPlatformRenderInterfaceContext
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0008
T:Avalonia.Platform.IWriteableBitmapImpl
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0008
+ T:Avalonia.Application
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Controls.Platform.IWin32OptionsTopLevelImpl
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IPopupImpl
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.ITopLevelImpl
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IWindowBaseImpl
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Platform.IWindowImpl
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0008
+ T:Avalonia.Metal.IMetalDevice
+ baseline/Avalonia/lib/net8.0/Avalonia.Metal.dll
+ current/Avalonia/lib/net8.0/Avalonia.Metal.dll
+
+
+ CP0008
+ T:Avalonia.OpenGL.Egl.EglContext
+ baseline/Avalonia/lib/net8.0/Avalonia.OpenGL.dll
+ current/Avalonia/lib/net8.0/Avalonia.OpenGL.dll
+
+
+ CP0008
+ T:Avalonia.OpenGL.IGlContext
+ baseline/Avalonia/lib/net8.0/Avalonia.OpenGL.dll
+ current/Avalonia/lib/net8.0/Avalonia.OpenGL.dll
+
+
+ CP0008
+ T:Avalonia.Vulkan.IVulkanDevice
+ baseline/Avalonia/lib/net8.0/Avalonia.Vulkan.dll
+ current/Avalonia/lib/net8.0/Avalonia.Vulkan.dll
+
+
+ CP0008
+ T:Avalonia.Vulkan.IVulkanPlatformGraphicsContext
+ baseline/Avalonia/lib/net8.0/Avalonia.Vulkan.dll
+ current/Avalonia/lib/net8.0/Avalonia.Vulkan.dll
+
CP0009
T:Avalonia.Controls.ResourcesChangedEventArgs
diff --git a/src/Avalonia.Base/Data/CompiledBinding.cs b/src/Avalonia.Base/Data/CompiledBinding.cs
index 764b04957e..952a5cddc4 100644
--- a/src/Avalonia.Base/Data/CompiledBinding.cs
+++ b/src/Avalonia.Base/Data/CompiledBinding.cs
@@ -7,6 +7,7 @@ using Avalonia.Data.Converters;
using Avalonia.Data.Core;
using Avalonia.Data.Core.ExpressionNodes;
using Avalonia.Data.Core.Parsers;
+using Avalonia.Metadata;
namespace Avalonia.Data;
@@ -70,6 +71,7 @@ public class CompiledBinding : BindingBase
///
/// Gets or sets the binding path.
///
+ [ConstructorArgument("path")]
public CompiledBindingPath? Path { get; set; }
///
diff --git a/src/Avalonia.Base/Data/ReflectionBinding.cs b/src/Avalonia.Base/Data/ReflectionBinding.cs
index 1209d47a2e..299f6317b4 100644
--- a/src/Avalonia.Base/Data/ReflectionBinding.cs
+++ b/src/Avalonia.Base/Data/ReflectionBinding.cs
@@ -8,6 +8,7 @@ using Avalonia.Data.Converters;
using Avalonia.Data.Core;
using Avalonia.Data.Core.ExpressionNodes;
using Avalonia.Data.Core.Parsers;
+using Avalonia.Metadata;
using Avalonia.Utilities;
namespace Avalonia.Data
@@ -34,17 +35,6 @@ namespace Avalonia.Data
{
Path = path;
}
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The binding path.
- /// The binding mode.
- public ReflectionBinding(string path, BindingMode mode)
- {
- Path = path;
- Mode = mode;
- }
///
/// Gets or sets the amount of time, in milliseconds, to wait before updating the binding
@@ -95,6 +85,7 @@ namespace Avalonia.Data
///
/// Gets or sets the binding path.
///
+ [ConstructorArgument("path")]
public string Path { get; set; } = "";
///
diff --git a/src/Avalonia.Base/Data/TemplateBinding.cs b/src/Avalonia.Base/Data/TemplateBinding.cs
index 428f9c4a11..55b3e74ce5 100644
--- a/src/Avalonia.Base/Data/TemplateBinding.cs
+++ b/src/Avalonia.Base/Data/TemplateBinding.cs
@@ -48,6 +48,7 @@ namespace Avalonia.Data
///
/// Gets or sets the name of the source property on the templated parent.
///
+ [ConstructorArgument("property")]
[InheritDataTypeFrom(InheritDataTypeFromScopeKind.ControlTemplate)]
public AvaloniaProperty? Property { get; set; }
diff --git a/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs b/src/Avalonia.Base/IOptionalFeatureProvider.cs
similarity index 92%
rename from src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs
rename to src/Avalonia.Base/IOptionalFeatureProvider.cs
index 27c2243791..55c3ef7984 100644
--- a/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs
+++ b/src/Avalonia.Base/IOptionalFeatureProvider.cs
@@ -1,8 +1,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
-// TODO12: move to Avalonia namespace.
-namespace Avalonia.Platform;
+namespace Avalonia;
public interface IOptionalFeatureProvider
{
diff --git a/src/Avalonia.Base/Metadata/ConstructorArgumentAttribute.cs b/src/Avalonia.Base/Metadata/ConstructorArgumentAttribute.cs
new file mode 100644
index 0000000000..5c0021655b
--- /dev/null
+++ b/src/Avalonia.Base/Metadata/ConstructorArgumentAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Avalonia.Metadata;
+
+///
+/// Indicates that a property corresponds to a named parameter in the constructor.
+///
+/// The name of the parameter in the constructor.
+/// This attribute is used for XAML.
+[AttributeUsage(AttributeTargets.Property)]
+public sealed class ConstructorArgumentAttribute(string name) : Attribute
+{
+ ///
+ /// Gets the name of the parameter in the constructor.
+ ///
+ public string Name { get; } = name;
+}
diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs
index f602b1a82d..8737367fb1 100644
--- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs
@@ -3,6 +3,7 @@ using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Data.Core;
using Avalonia.Markup.Xaml.XamlIl.Runtime;
+using Avalonia.Metadata;
using Avalonia.Styling;
namespace Avalonia.Markup.Xaml.MarkupExtensions
@@ -22,6 +23,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
ResourceKey = resourceKey;
}
+ [ConstructorArgument("resourceKey")]
public object? ResourceKey { get; set; }
public BindingBase ProvideValue(IServiceProvider serviceProvider)
diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ReflectionBindingExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ReflectionBindingExtension.cs
index 311d151ddb..f4b7864185 100644
--- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ReflectionBindingExtension.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ReflectionBindingExtension.cs
@@ -22,13 +22,6 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
/// The binding path.
public ReflectionBindingExtension(string path) : base(path) { }
- ///
- /// Initializes a new instance of the class.
- ///
- /// The binding path.
- /// The binding mode.
- public ReflectionBindingExtension(string path, BindingMode mode) : base(path, mode) { }
-
public ReflectionBinding ProvideValue(IServiceProvider serviceProvider)
{
return new ReflectionBinding
diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs
index fce026bb1c..c59d038223 100644
--- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs
@@ -1,5 +1,6 @@
using System;
using Avalonia.Data;
+using Avalonia.Metadata;
namespace Avalonia.Markup.Xaml.MarkupExtensions
{
diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlTypes.cs b/src/Markup/Avalonia.Markup.Xaml/XamlTypes.cs
index 513b18c7a7..cf3c82fdb9 100644
--- a/src/Markup/Avalonia.Markup.Xaml/XamlTypes.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/XamlTypes.cs
@@ -32,14 +32,4 @@ namespace Avalonia.Markup.Xaml
[RequiresUnreferencedCode(TrimmingMessages.XamlTypeResolvedRequiresUnreferenceCodeMessage)]
Type Resolve (string qualifiedTypeName);
}
-
- // TODO12: Move to Avalonia.Base
- [AttributeUsage(AttributeTargets.Property)]
- public sealed class ConstructorArgumentAttribute : Attribute
- {
- public ConstructorArgumentAttribute(string name)
- {
-
- }
- }
}
diff --git a/src/Markup/Avalonia.Markup/Data/Binding.cs b/src/Markup/Avalonia.Markup/Data/Binding.cs
index 3a0f8a482e..4e624b6479 100644
--- a/src/Markup/Avalonia.Markup/Data/Binding.cs
+++ b/src/Markup/Avalonia.Markup/Data/Binding.cs
@@ -16,6 +16,4 @@ public class Binding : ReflectionBinding
public Binding() { }
public Binding(string path) : base(path) { }
-
- public Binding(string path, BindingMode mode) : base(path, mode) { }
}
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs
index 19ede2bbb3..e47dca2391 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs
@@ -1091,7 +1091,11 @@ namespace Avalonia.Base.UnitTests
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value), BindingMode.TwoWay) { Source = source });
+ target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ });
target.DoubleValue = 123.4;
@@ -1105,7 +1109,11 @@ namespace Avalonia.Base.UnitTests
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value), BindingMode.TwoWay) { Source = source });
+ target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ });
Assert.False(source.SetterCalled);
}
@@ -1116,7 +1124,11 @@ namespace Avalonia.Base.UnitTests
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- target.Bind(Class1.DoubleValueProperty, new Binding("[0]", BindingMode.TwoWay) { Source = source });
+ target.Bind(Class1.DoubleValueProperty, new Binding("[0]")
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ });
Assert.False(source.SetterCalled);
}
@@ -1127,7 +1139,7 @@ namespace Avalonia.Base.UnitTests
var target = new TextBlock();
target.DataContext = null;
- target.Bind(TextBlock.TextProperty, new Binding("Missing", BindingMode.TwoWay));
+ target.Bind(TextBlock.TextProperty, new Binding("Missing") { Mode = BindingMode.TwoWay });
}
[Fact]
@@ -1136,7 +1148,7 @@ namespace Avalonia.Base.UnitTests
var target = new TextBlock();
target.DataContext = null;
- target.Bind(TextBlock.TextProperty, new Binding("[0]", BindingMode.TwoWay));
+ target.Bind(TextBlock.TextProperty, new Binding("[0]") { Mode = BindingMode.TwoWay });
}
[Theory(Skip = "Will need changes to binding internals in order to pass")]
@@ -1147,7 +1159,11 @@ namespace Avalonia.Base.UnitTests
{
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- var binding = new Binding(nameof(source.Value), BindingMode.TwoWay) { Source = source };
+ var binding = new Binding(nameof(source.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ };
target.Bind(Class1.DoubleValueProperty, binding, priority);
target.SetValue(Class1.DoubleValueProperty, 123.4, priority - 1);
@@ -1165,7 +1181,11 @@ namespace Avalonia.Base.UnitTests
{
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- var binding1 = new Binding(nameof(source.Value), BindingMode.TwoWay) { Source = source };
+ var binding1 = new Binding(nameof(source.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ };
var binding2 = new BehaviorSubject(123.4);
target.Bind(Class1.DoubleValueProperty, binding1, priority);
@@ -1182,7 +1202,11 @@ namespace Avalonia.Base.UnitTests
var target = new Class1();
var source = new TestTwoWayBindingViewModel();
- target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value), BindingMode.TwoWay) { Source = source });
+ target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source
+ });
target.SetValue(Class1.DoubleValueProperty, 123.4, BindingPriority.Animation);
// Setter should not be called because the TwoWay binding with Style priority
@@ -1197,7 +1221,11 @@ namespace Avalonia.Base.UnitTests
var source1 = new TestTwoWayBindingViewModel();
var source2 = new BehaviorSubject(123.4);
- target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source1.Value), BindingMode.TwoWay) { Source = source1 });
+ target.Bind(Class1.DoubleValueProperty, new Binding(nameof(source1.Value))
+ {
+ Mode = BindingMode.TwoWay,
+ Source = source1
+ });
target.Bind(Class1.DoubleValueProperty, source2, BindingPriority.Animation);
// Setter should not be called because the TwoWay binding with Style priority
diff --git a/tests/Avalonia.Base.UnitTests/Styling/SetterTests.cs b/tests/Avalonia.Base.UnitTests/Styling/SetterTests.cs
index 0551fa5bc4..7eb2550e52 100644
--- a/tests/Avalonia.Base.UnitTests/Styling/SetterTests.cs
+++ b/tests/Avalonia.Base.UnitTests/Styling/SetterTests.cs
@@ -143,8 +143,9 @@ namespace Avalonia.Base.UnitTests.Styling
Classes = { "foo" },
};
- var binding = new Binding("Name", BindingMode.OneWay)
+ var binding = new Binding("Name")
{
+ Mode = BindingMode.OneWay,
Converter = new TestConverter(),
RelativeSource = new RelativeSource(RelativeSourceMode.Self),
};
diff --git a/tests/Avalonia.Benchmarks/Data/Binding_Setup.cs b/tests/Avalonia.Benchmarks/Data/Binding_Setup.cs
index 84f5bec10f..e26e636580 100644
--- a/tests/Avalonia.Benchmarks/Data/Binding_Setup.cs
+++ b/tests/Avalonia.Benchmarks/Data/Binding_Setup.cs
@@ -31,7 +31,7 @@ public class Binding_Setup
public void Setup_DataContext_Property_Binding_TwoWay()
{
var target = _target;
- var binding = new Binding(nameof(_data.IntValue), mode: BindingMode.TwoWay);
+ var binding = new Binding(nameof(_data.IntValue)) { Mode = BindingMode.TwoWay };
for (var i = 0; i < 100; ++i)
{
diff --git a/tests/Avalonia.Benchmarks/Data/Binding_Values.cs b/tests/Avalonia.Benchmarks/Data/Binding_Values.cs
index 7cf30eee4d..fa62292e90 100644
--- a/tests/Avalonia.Benchmarks/Data/Binding_Values.cs
+++ b/tests/Avalonia.Benchmarks/Data/Binding_Values.cs
@@ -36,7 +36,7 @@ public class Binding_Values
_data.IntValue = -1;
var target = _target;
- var binding = new Binding(nameof(_data.IntValue), mode: BindingMode.TwoWay);
+ var binding = new Binding(nameof(_data.IntValue)) { Mode = BindingMode.TwoWay };
using var d = target.Bind(TestControl.IntValueProperty, binding);
for (var i = 0; i < 100; ++i)
diff --git a/tests/Avalonia.Controls.UnitTests/TextBoxTests_DataValidation.cs b/tests/Avalonia.Controls.UnitTests/TextBoxTests_DataValidation.cs
index 77dad85e03..8c9a845050 100644
--- a/tests/Avalonia.Controls.UnitTests/TextBoxTests_DataValidation.cs
+++ b/tests/Avalonia.Controls.UnitTests/TextBoxTests_DataValidation.cs
@@ -29,7 +29,7 @@ namespace Avalonia.Controls.UnitTests
var target = new TextBox
{
DataContext = new ExceptionTest(),
- [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10), BindingMode.TwoWay),
+ [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10)) { Mode = BindingMode.TwoWay },
Template = CreateTemplate(),
};
@@ -51,7 +51,7 @@ namespace Avalonia.Controls.UnitTests
var target = new TextBox
{
DataContext = new ExceptionTest(),
- [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10), BindingMode.TwoWay),
+ [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10)) { Mode = BindingMode.TwoWay },
Template = CreateTemplate(),
};
@@ -77,7 +77,7 @@ namespace Avalonia.Controls.UnitTests
var target = new TextBox
{
DataContext = new ExceptionTest(),
- [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10), BindingMode.TwoWay),
+ [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10)) { Mode = BindingMode.TwoWay },
Template = CreateTemplate()
};
DataValidationErrors.SetErrorConverter(target, err => "Error: " + err);
@@ -101,7 +101,7 @@ namespace Avalonia.Controls.UnitTests
var target = new TextBox
{
DataContext = new ExceptionTest(),
- [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10), BindingMode.TwoWay),
+ [!TextBox.TextProperty] = new Binding(nameof(ExceptionTest.LessThan10)) { Mode = BindingMode.TwoWay },
Template = CreateTemplate(),
};
diff --git a/tests/Avalonia.Markup.UnitTests/Data/BindingTests.cs b/tests/Avalonia.Markup.UnitTests/Data/BindingTests.cs
index 42dc681f7c..345c4c3b6d 100644
--- a/tests/Avalonia.Markup.UnitTests/Data/BindingTests.cs
+++ b/tests/Avalonia.Markup.UnitTests/Data/BindingTests.cs
@@ -544,8 +544,8 @@ namespace Avalonia.Markup.UnitTests.Data
var root = new Panel { Children = { target1, target2 } };
var source = new Source { Foo = "foo" };
- using (target1.Bind(TextBlock.TextProperty, new Binding("Foo", BindingMode.OneTime)))
- using (target2.Bind(TextBlock.TextProperty, new Binding("Foo", BindingMode.OneWayToSource)))
+ using (target1.Bind(TextBlock.TextProperty, new Binding("Foo") { Mode = BindingMode.OneTime }))
+ using (target2.Bind(TextBlock.TextProperty, new Binding("Foo") { Mode = BindingMode.OneWayToSource }))
{
root.DataContext = source;
}
@@ -643,8 +643,8 @@ namespace Avalonia.Markup.UnitTests.Data
Children = { target1, target2 }
};
- target1.Bind(TextBlock.TextProperty, new Binding("Foo", BindingMode.TwoWay));
- target2.Bind(TextBlock.TextProperty, new Binding("Foo", BindingMode.OneWayToSource));
+ target1.Bind(TextBlock.TextProperty, new Binding("Foo") { Mode = BindingMode.TwoWay });
+ target2.Bind(TextBlock.TextProperty, new Binding("Foo") { Mode = BindingMode.OneWayToSource });
Assert.Equal("OneWayToSource", source.Foo);
diff --git a/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Delay.cs b/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Delay.cs
index a73fbd7bb4..da649bc184 100644
--- a/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Delay.cs
+++ b/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Delay.cs
@@ -29,7 +29,11 @@ public class BindingTests_Delay : ScopedTestBase, IDisposable
_source = new BindingTests.Source { Foo = InitialFooValue };
_target = new TextBox { DataContext = _source };
- _binding = new Binding(nameof(_source.Foo), BindingMode.TwoWay) { Delay = DelayMilliseconds };
+ _binding = new Binding(nameof(_source.Foo))
+ {
+ Mode = BindingMode.TwoWay,
+ Delay = DelayMilliseconds
+ };
_bindingExpr = _target.Bind(TextBox.TextProperty, _binding);
@@ -120,7 +124,12 @@ public class BindingTests_Delay : ScopedTestBase, IDisposable
new TestRoot() { Child = new Panel() { Children = { _target, secondBox } } };
- _target.Bind(TextBox.TextProperty, new Binding(nameof(_source.Foo), BindingMode.TwoWay) { Delay = DelayMilliseconds, UpdateSourceTrigger = UpdateSourceTrigger.LostFocus });
+ _target.Bind(TextBox.TextProperty, new Binding(nameof(_source.Foo))
+ {
+ Mode = BindingMode.TwoWay,
+ Delay = DelayMilliseconds,
+ UpdateSourceTrigger = UpdateSourceTrigger.LostFocus
+ });
Assert.True(_target.Focus());
_target.Text = "bar";
@@ -134,7 +143,11 @@ public class BindingTests_Delay : ScopedTestBase, IDisposable
[Fact]
public void Delayed_Binding_OneWayToSource_DataContext_Change_Should_Update_Source_Immediately()
{
- _target.Bind(TextBlock.TextProperty, new Binding(nameof(_source.Foo), BindingMode.OneWayToSource) { Delay = DelayMilliseconds });
+ _target.Bind(TextBlock.TextProperty, new Binding(nameof(_source.Foo))
+ {
+ Mode = BindingMode.OneWayToSource,
+ Delay = DelayMilliseconds
+ });
_target.Text = "bar";
diff --git a/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Self.cs b/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Self.cs
index cd1e0cd0a2..5281993f1e 100644
--- a/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Self.cs
+++ b/tests/Avalonia.Markup.UnitTests/Data/BindingTests_Self.cs
@@ -34,8 +34,9 @@ namespace Avalonia.Markup.UnitTests.Data
var target = new TextBlock
{
Tag = "Hello World!",
- [!TextBlock.TextProperty] = new Binding("Tag", BindingMode.TwoWay)
+ [!TextBlock.TextProperty] = new Binding("Tag")
{
+ Mode = BindingMode.TwoWay,
RelativeSource = new RelativeSource(RelativeSourceMode.Self)
},
};