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) }, };