Browse Source

Move ItemsRepeater to separate assembly.

Steven Kirk 2 years ago
parent
commit
0065a962ac
52 changed files with 81 additions and 19 deletions
  1. 1 0
      Avalonia.Desktop.slnf
  2. 13 0
      Avalonia.sln
  3. 1 0
      samples/ControlCatalog/ControlCatalog.csproj
  4. 20 0
      src/Avalonia.Controls.ItemsRepeater/Avalonia.Controls.ItemsRepeater.csproj
  5. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ElementFactory.cs
  6. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/IElementFactory.cs
  7. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ItemTemplateWrapper.cs
  8. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeater.cs
  9. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementClearingEventArgs.cs
  10. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementIndexChangedEventArgs.cs
  11. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementPreparedEventArgs.cs
  12. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/RecyclePool.cs
  13. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/RecyclingElementFactory.cs
  14. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/RepeaterLayoutContext.cs
  15. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/UniqueIdElementPool.cs
  16. 5 5
      src/Avalonia.Controls.ItemsRepeater/Controls/ViewManager.cs
  17. 5 5
      src/Avalonia.Controls.ItemsRepeater/Controls/ViewportManager.cs
  18. 0 0
      src/Avalonia.Controls.ItemsRepeater/Controls/VirtualizationInfo.cs
  19. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/AttachedLayout.cs
  20. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/ElementManager.cs
  21. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/FlowLayoutAlgorithm.cs
  22. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/IFlowLayoutAlgorithmDelegates.cs
  23. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/LayoutContext.cs
  24. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/LayoutContextAdapter.cs
  25. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingLayout.cs
  26. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingLayoutContext.cs
  27. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingStackLayout.cs
  28. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/OrientationBasedMeasures.cs
  29. 3 2
      src/Avalonia.Controls.ItemsRepeater/Layout/StackLayout.cs
  30. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/StackLayoutState.cs
  31. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/UniformGridLayout.cs
  32. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/UniformGridLayoutState.cs
  33. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/Utils/ListUtils.cs
  34. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/UvBounds.cs
  35. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/UvMeasure.cs
  36. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/VirtualLayoutContextAdapter.cs
  37. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/VirtualizingLayout.cs
  38. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/VirtualizingLayoutContext.cs
  39. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/WrapItem.cs
  40. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/WrapLayout.cs
  41. 0 0
      src/Avalonia.Controls.ItemsRepeater/Layout/WrapLayoutState.cs
  42. 4 0
      src/Avalonia.Controls.ItemsRepeater/Properties/AssemblyInfo.cs
  43. 1 0
      src/Avalonia.Controls/Avalonia.Controls.csproj
  44. 2 2
      src/Avalonia.Controls/StackPanel.cs
  45. 1 1
      src/Avalonia.Controls/VirtualizingStackPanel.cs
  46. 1 2
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs
  47. 0 2
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs
  48. 22 0
      tests/Avalonia.Controls.ItemsRepeater.UnitTests/Avalonia.Controls.ItemsRepeater.UnitTests.csproj
  49. 0 0
      tests/Avalonia.Controls.ItemsRepeater.UnitTests/ItemsRepeaterTests.cs
  50. 0 0
      tests/Avalonia.Controls.ItemsRepeater.UnitTests/NonVirtualizingStackLayoutTests.cs
  51. 1 0
      tests/Avalonia.LeakTests/Avalonia.LeakTests.csproj
  52. 1 0
      tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj

+ 1 - 0
Avalonia.Desktop.slnf

@@ -15,6 +15,7 @@
       "src\\Avalonia.Build.Tasks\\Avalonia.Build.Tasks.csproj",
       "src\\Avalonia.Controls.ColorPicker\\Avalonia.Controls.ColorPicker.csproj",
       "src\\Avalonia.Controls.DataGrid\\Avalonia.Controls.DataGrid.csproj",
+      "src\\Avalonia.Controls.ItemsRepeater\\Avalonia.Controls.ItemsRepeater.csproj",
       "src\\Avalonia.Controls\\Avalonia.Controls.csproj",
       "src\\Avalonia.DesignerSupport\\Avalonia.DesignerSupport.csproj",
       "src\\Avalonia.Desktop\\Avalonia.Desktop.csproj",

+ 13 - 0
Avalonia.sln

@@ -233,6 +233,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUIDemo", "samples\R
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GpuInterop", "samples\GpuInterop\GpuInterop.csproj", "{C810060E-3809-4B74-A125-F11533AF9C1B}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Controls.ItemsRepeater", "src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj", "{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Controls.ItemsRepeater.UnitTests", "tests\Avalonia.Controls.ItemsRepeater.UnitTests\Avalonia.Controls.ItemsRepeater.UnitTests.csproj", "{F4E36AA8-814E-4704-BC07-291F70F45193}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -548,6 +552,14 @@ Global
 		{C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C810060E-3809-4B74-A125-F11533AF9C1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C810060E-3809-4B74-A125-F11533AF9C1B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F4E36AA8-814E-4704-BC07-291F70F45193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F4E36AA8-814E-4704-BC07-291F70F45193}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F4E36AA8-814E-4704-BC07-291F70F45193}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F4E36AA8-814E-4704-BC07-291F70F45193}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -613,6 +625,7 @@ Global
 		{90B08091-9BBD-4362-B712-E9F2CC62B218} = {9B9E3891-2366-4253-A952-D08BCEB71098}
 		{75C47156-C5D8-44BC-A5A7-E8657C2248D6} = {9B9E3891-2366-4253-A952-D08BCEB71098}
 		{C810060E-3809-4B74-A125-F11533AF9C1B} = {9B9E3891-2366-4253-A952-D08BCEB71098}
+		{F4E36AA8-814E-4704-BC07-291F70F45193} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A}

+ 1 - 0
samples/ControlCatalog/ControlCatalog.csproj

@@ -26,6 +26,7 @@
     <ProjectReference Include="..\..\packages\Avalonia\Avalonia.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Controls.ColorPicker\Avalonia.Controls.ColorPicker.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Controls.DataGrid\Avalonia.Controls.DataGrid.csproj" />
+    <ProjectReference Include="..\..\src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Themes.Simple\Avalonia.Themes.Simple.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Themes.Fluent\Avalonia.Themes.Fluent.csproj" />
     <ProjectReference Include="..\MiniMvvm\MiniMvvm.csproj" />

+ 20 - 0
src/Avalonia.Controls.ItemsRepeater/Avalonia.Controls.ItemsRepeater.csproj

@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks>
+    <PackageId>Avalonia.Controls.ItemsRepeater</PackageId>
+    <RootNamespace>Avalonia</RootNamespace>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="..\Avalonia.Base\Metadata\NullableAttributes.cs" Link="NullableAttributes.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" />
+    <ProjectReference Include="..\Avalonia.Controls\Avalonia.Controls.csproj" />
+  </ItemGroup>
+  <Import Project="..\..\build\EmbedXaml.props" />
+  <Import Project="..\..\build\BuildTargets.targets" />
+  <!--<Import Project="..\..\build\ApiDiff.props" />-->
+  <Import Project="..\..\build\NullableEnable.props" />
+  <Import Project="..\..\build\TrimmingEnable.props" />
+  <Import Project="..\..\build\DevAnalyzers.props" />
+</Project>

+ 0 - 0
src/Avalonia.Controls/Repeater/ElementFactory.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ElementFactory.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/IElementFactory.cs → src/Avalonia.Controls.ItemsRepeater/Controls/IElementFactory.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/ItemTemplateWrapper.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ItemTemplateWrapper.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/ItemsRepeater.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeater.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/ItemsRepeaterElementClearingEventArgs.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementClearingEventArgs.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/ItemsRepeaterElementIndexChangedEventArgs.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementIndexChangedEventArgs.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/ItemsRepeaterElementPreparedEventArgs.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ItemsRepeaterElementPreparedEventArgs.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/RecyclePool.cs → src/Avalonia.Controls.ItemsRepeater/Controls/RecyclePool.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs → src/Avalonia.Controls.ItemsRepeater/Controls/RecyclingElementFactory.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/RepeaterLayoutContext.cs → src/Avalonia.Controls.ItemsRepeater/Controls/RepeaterLayoutContext.cs


+ 0 - 0
src/Avalonia.Controls/Repeater/UniqueIdElementPool.cs → src/Avalonia.Controls.ItemsRepeater/Controls/UniqueIdElementPool.cs


+ 5 - 5
src/Avalonia.Controls/Repeater/ViewManager.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ViewManager.cs

@@ -256,7 +256,7 @@ namespace Avalonia.Controls
 
         public void UpdatePin(Control element, bool addPin)
         {
-            var parent = element.VisualParent;
+            var parent = element.GetVisualParent();
             var child = (Visual)element;
 
             while (parent != null)
@@ -283,7 +283,7 @@ namespace Avalonia.Controls
                 }
 
                 child = parent;
-                parent = child.VisualParent;
+                parent = child.GetVisualParent();
             }
         }
 
@@ -656,7 +656,7 @@ namespace Avalonia.Controls
             // that handlers can walk up the tree in case they want to find their IndexPath in the 
             // nested case.
             var children = repeater.Children;
-            if (element.VisualParent != repeater)
+            if (element.GetVisualParent() != repeater)
             {
                 children.Add(element);
             }
@@ -701,7 +701,7 @@ namespace Avalonia.Controls
 
             if (FocusManager.Instance?.Current is Visual child)
             {
-                var parent = child.VisualParent;
+                var parent = child.GetVisualParent();
                 var owner = _owner;
 
                 // Find out if the focused element belongs to one of our direct
@@ -722,7 +722,7 @@ namespace Avalonia.Controls
                     }
 
                     child = parent;
-                    parent = child?.VisualParent;
+                    parent = child?.GetVisualParent();
                 }
             }
 

+ 5 - 5
src/Avalonia.Controls/Repeater/ViewportManager.cs → src/Avalonia.Controls.ItemsRepeater/Controls/ViewportManager.cs

@@ -67,7 +67,7 @@ namespace Avalonia.Controls
                         // be a direct child of ours, or even an indirect child. We need to walk up the tree starting
                         // from anchorElement to figure out what child of ours (if any) to use as the suggested element.
                         var child = anchorElement;
-                        var parent = child.VisualParent as Control;
+                        var parent = child.GetVisualParent() as Control;
 
                         while (parent != null)
                         {
@@ -78,7 +78,7 @@ namespace Avalonia.Controls
                             }
 
                             child = parent;
-                            parent = parent.VisualParent as Control;
+                            parent = parent.GetVisualParent() as Control;
                         }
                     }
                 }
@@ -369,11 +369,11 @@ namespace Avalonia.Controls
         private Control? GetImmediateChildOfRepeater(Control descendant)
         {
             var targetChild = descendant;
-            var parent = (Control?)descendant.VisualParent;
+            var parent = (Control?)descendant.GetVisualParent();
             while (parent != null && parent != _owner)
             {
                 targetChild = parent;
-                parent = (Control?)parent.VisualParent;
+                parent = (Control?)parent.GetVisualParent();
             }
 
             if (parent == null)
@@ -471,7 +471,7 @@ namespace Avalonia.Controls
                         break;
                     }
 
-                    parent = parent.VisualParent;
+                    parent = parent.GetVisualParent();
                 }
 
                 if (!_managingViewportDisabled)

+ 0 - 0
src/Avalonia.Controls/Repeater/VirtualizationInfo.cs → src/Avalonia.Controls.ItemsRepeater/Controls/VirtualizationInfo.cs


+ 0 - 0
src/Avalonia.Base/Layout/AttachedLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/AttachedLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/ElementManager.cs → src/Avalonia.Controls.ItemsRepeater/Layout/ElementManager.cs


+ 0 - 0
src/Avalonia.Base/Layout/FlowLayoutAlgorithm.cs → src/Avalonia.Controls.ItemsRepeater/Layout/FlowLayoutAlgorithm.cs


+ 0 - 0
src/Avalonia.Base/Layout/IFlowLayoutAlgorithmDelegates.cs → src/Avalonia.Controls.ItemsRepeater/Layout/IFlowLayoutAlgorithmDelegates.cs


+ 0 - 0
src/Avalonia.Base/Layout/LayoutContext.cs → src/Avalonia.Controls.ItemsRepeater/Layout/LayoutContext.cs


+ 0 - 0
src/Avalonia.Base/Layout/LayoutContextAdapter.cs → src/Avalonia.Controls.ItemsRepeater/Layout/LayoutContextAdapter.cs


+ 0 - 0
src/Avalonia.Base/Layout/NonVirtualizingLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/NonVirtualizingLayoutContext.cs → src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingLayoutContext.cs


+ 0 - 0
src/Avalonia.Base/Layout/NonVirtualizingStackLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/NonVirtualizingStackLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/OrientationBasedMeasures.cs → src/Avalonia.Controls.ItemsRepeater/Layout/OrientationBasedMeasures.cs


+ 3 - 2
src/Avalonia.Base/Layout/StackLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/StackLayout.cs

@@ -5,6 +5,7 @@
 
 using System;
 using System.Collections.Specialized;
+using Avalonia.Controls;
 using Avalonia.Data;
 using Avalonia.Logging;
 
@@ -25,13 +26,13 @@ namespace Avalonia.Layout
         /// Defines the <see cref="Orientation"/> property.
         /// </summary>
         public static readonly StyledProperty<Orientation> OrientationProperty =
-            AvaloniaProperty.Register<StackLayout, Orientation>(nameof(Orientation), Orientation.Vertical);
+            StackPanel.OrientationProperty.AddOwner<StackPanel>();
 
         /// <summary>
         /// Defines the <see cref="Spacing"/> property.
         /// </summary>
         public static readonly StyledProperty<double> SpacingProperty =
-            AvaloniaProperty.Register<StackLayout, double>(nameof(Spacing));
+            StackPanel.SpacingProperty.AddOwner<StackLayout>();
 
         private readonly OrientationBasedMeasures _orientation = new OrientationBasedMeasures();
 

+ 0 - 0
src/Avalonia.Base/Layout/StackLayoutState.cs → src/Avalonia.Controls.ItemsRepeater/Layout/StackLayoutState.cs


+ 0 - 0
src/Avalonia.Base/Layout/UniformGridLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/UniformGridLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/UniformGridLayoutState.cs → src/Avalonia.Controls.ItemsRepeater/Layout/UniformGridLayoutState.cs


+ 0 - 0
src/Avalonia.Base/Layout/Utils/ListUtils.cs → src/Avalonia.Controls.ItemsRepeater/Layout/Utils/ListUtils.cs


+ 0 - 0
src/Avalonia.Base/Layout/WrapLayout/UvBounds.cs → src/Avalonia.Controls.ItemsRepeater/Layout/UvBounds.cs


+ 0 - 0
src/Avalonia.Base/Layout/WrapLayout/UvMeasure.cs → src/Avalonia.Controls.ItemsRepeater/Layout/UvMeasure.cs


+ 0 - 0
src/Avalonia.Base/Layout/VirtualLayoutContextAdapter.cs → src/Avalonia.Controls.ItemsRepeater/Layout/VirtualLayoutContextAdapter.cs


+ 0 - 0
src/Avalonia.Base/Layout/VirtualizingLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/VirtualizingLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/VirtualizingLayoutContext.cs → src/Avalonia.Controls.ItemsRepeater/Layout/VirtualizingLayoutContext.cs


+ 0 - 0
src/Avalonia.Base/Layout/WrapLayout/WrapItem.cs → src/Avalonia.Controls.ItemsRepeater/Layout/WrapItem.cs


+ 0 - 0
src/Avalonia.Base/Layout/WrapLayout/WrapLayout.cs → src/Avalonia.Controls.ItemsRepeater/Layout/WrapLayout.cs


+ 0 - 0
src/Avalonia.Base/Layout/WrapLayout/WrapLayoutState.cs → src/Avalonia.Controls.ItemsRepeater/Layout/WrapLayoutState.cs


+ 4 - 0
src/Avalonia.Controls.ItemsRepeater/Properties/AssemblyInfo.cs

@@ -0,0 +1,4 @@
+using Avalonia.Metadata;
+
+[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls")]
+[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Layout")]

+ 1 - 0
src/Avalonia.Controls/Avalonia.Controls.csproj

@@ -12,6 +12,7 @@
   <Import Project="..\..\build\DevAnalyzers.props" />
 
   <ItemGroup Label="InternalsVisibleTo">
+    <InternalsVisibleTo Include="Avalonia.Controls.ItemsRepeater, PublicKey=$(AvaloniaPublicKey)" />
     <InternalsVisibleTo Include="Avalonia.Controls.UnitTests, PublicKey=$(AvaloniaPublicKey)" />
     <InternalsVisibleTo Include="Avalonia.DesignerSupport, PublicKey=$(AvaloniaPublicKey)" />
     <InternalsVisibleTo Include="Avalonia.LeakTests, PublicKey=$(AvaloniaPublicKey)" />

+ 2 - 2
src/Avalonia.Controls/StackPanel.cs

@@ -22,13 +22,13 @@ namespace Avalonia.Controls
         /// Defines the <see cref="Spacing"/> property.
         /// </summary>
         public static readonly StyledProperty<double> SpacingProperty =
-            StackLayout.SpacingProperty.AddOwner<StackPanel>();
+            AvaloniaProperty.Register<StackPanel, double>(nameof(Spacing));
 
         /// <summary>
         /// Defines the <see cref="Orientation"/> property.
         /// </summary>
         public static readonly StyledProperty<Orientation> OrientationProperty =
-            StackLayout.OrientationProperty.AddOwner<StackPanel>();
+            AvaloniaProperty.Register<StackPanel, Orientation>(nameof(Orientation), Orientation.Vertical);
 
         /// <summary>
         /// Defines the <see cref="AreHorizontalSnapPointsRegular"/> property.

+ 1 - 1
src/Avalonia.Controls/VirtualizingStackPanel.cs

@@ -23,7 +23,7 @@ namespace Avalonia.Controls
         /// Defines the <see cref="Orientation"/> property.
         /// </summary>
         public static readonly StyledProperty<Orientation> OrientationProperty =
-            StackLayout.OrientationProperty.AddOwner<VirtualizingStackPanel>();
+            StackPanel.OrientationProperty.AddOwner<VirtualizingStackPanel>();
 
         /// <summary>
         /// Defines the <see cref="AreHorizontalSnapPointsRegular"/> property.

+ 1 - 2
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs

@@ -79,8 +79,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
                         {
                             var parentType = parentObject.Type.GetClrType();
 
-                            if (context.GetAvaloniaTypes().ItemsControl.IsDirectlyAssignableFrom(parentType)
-                                || context.GetAvaloniaTypes().ItemsRepeater.IsDirectlyAssignableFrom(parentType))
+                            if (context.GetAvaloniaTypes().ItemsControl.IsDirectlyAssignableFrom(parentType))
                             {
                                 inferredDataContextTypeNode = InferDataContextOfPresentedItem(context, on, parentObject);
                             }

+ 0 - 2
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs

@@ -55,7 +55,6 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
         public IXamlType DataTemplate { get; }
         public IXamlType IDataTemplate { get; }
         public IXamlType ItemsControl { get; }
-        public IXamlType ItemsRepeater { get; }
         public IXamlType ReflectionBindingExtension { get; }
 
         public IXamlType RelativeSource { get; }
@@ -179,7 +178,6 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
             DataTemplate = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.Templates.DataTemplate");
             IDataTemplate = cfg.TypeSystem.GetType("Avalonia.Controls.Templates.IDataTemplate");
             ItemsControl = cfg.TypeSystem.GetType("Avalonia.Controls.ItemsControl");
-            ItemsRepeater = cfg.TypeSystem.GetType("Avalonia.Controls.ItemsRepeater");
             ReflectionBindingExtension = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.ReflectionBindingExtension");
             RelativeSource = cfg.TypeSystem.GetType("Avalonia.Data.RelativeSource");
             UInt = cfg.TypeSystem.GetType("System.UInt32");

+ 22 - 0
tests/Avalonia.Controls.ItemsRepeater.UnitTests/Avalonia.Controls.ItemsRepeater.UnitTests.csproj

@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <OutputType>Library</OutputType>
+    <IsTestProject>true</IsTestProject>
+  </PropertyGroup>
+  <Import Project="..\..\build\UnitTests.NetCore.targets" />
+  <Import Project="..\..\build\UnitTests.NetFX.props" />
+  <Import Project="..\..\build\Moq.props" />
+  <Import Project="..\..\build\XUnit.props" />
+  <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\Microsoft.Reactive.Testing.props" />
+  <Import Project="..\..\build\Base.props" />
+  <Import Project="..\..\build\SharedVersion.props" />
+  <ItemGroup>
+    <ProjectReference Include="..\..\src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj" />
+    <ProjectReference Include="..\Avalonia.UnitTests\Avalonia.UnitTests.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
+  </ItemGroup>
+</Project>

+ 0 - 0
tests/Avalonia.Controls.UnitTests/ItemsRepeaterTests.cs → tests/Avalonia.Controls.ItemsRepeater.UnitTests/ItemsRepeaterTests.cs


+ 0 - 0
tests/Avalonia.Base.UnitTests/Layout/NonVirtualizingStackLayoutTests.cs → tests/Avalonia.Controls.ItemsRepeater.UnitTests/NonVirtualizingStackLayoutTests.cs


+ 1 - 0
tests/Avalonia.LeakTests/Avalonia.LeakTests.csproj

@@ -11,6 +11,7 @@
   <ItemGroup>
     <ProjectReference Include="..\..\src\Avalonia.Controls.ColorPicker\Avalonia.Controls.ColorPicker.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Controls.DataGrid\Avalonia.Controls.DataGrid.csproj" />
+    <ProjectReference Include="..\..\src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj" />
     <ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />
     <ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj" />

+ 1 - 0
tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj

@@ -17,6 +17,7 @@
     <ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj" />
+    <ProjectReference Include="..\..\src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj" />
     <ProjectReference Include="..\..\src\Avalonia.Themes.Simple\Avalonia.Themes.Simple.csproj" />
     <ProjectReference Include="..\Avalonia.UnitTests\Avalonia.UnitTests.csproj" />
   </ItemGroup>