Browse Source

Move current contents of Avalonia.Markup to Avalonia.Base. Move Avalonia.Markup.Xaml.Data/Parser classes to Avalonia.Markup since they're not Xaml-specific.

Use pattern-matching switch.

Fix bug from cleanup.
pull/1594/head
Jeremy Koritzinsky 8 years ago
parent
commit
cf8244b37a
  1. 2
      Avalonia.sln
  2. 8
      build/Binding.props
  3. 3
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs
  4. 7
      src/Android/Avalonia.Android/Resources/Resource.Designer.cs
  5. 1
      src/Avalonia.Base/Avalonia.Base.csproj
  6. 5
      src/Avalonia.Base/Collections/AvaloniaDictionary.cs
  7. 3
      src/Avalonia.Base/Data/BindingNotification.cs
  8. 2
      src/Avalonia.Base/Data/Converters/AlwaysEnabledDelegateCommand.cs
  9. 2
      src/Avalonia.Base/Data/Converters/BoolConverters.cs
  10. 2
      src/Avalonia.Base/Data/Converters/DefaultValueConverter.cs
  11. 2
      src/Avalonia.Base/Data/Converters/FuncMultiValueConverter.cs
  12. 2
      src/Avalonia.Base/Data/Converters/FuncValueConverter.cs
  13. 2
      src/Avalonia.Base/Data/Converters/IMultiValueConverter.cs
  14. 2
      src/Avalonia.Base/Data/Converters/IValueConverter.cs
  15. 2
      src/Avalonia.Base/Data/Converters/StringConverters.cs
  16. 4
      src/Avalonia.Base/Data/Core/BindingExpression.cs
  17. 2
      src/Avalonia.Base/Data/Core/CommonPropertyNames.cs
  18. 2
      src/Avalonia.Base/Data/Core/EmptyExpressionNode.cs
  19. 2
      src/Avalonia.Base/Data/Core/ExpressionNode.cs
  20. 4
      src/Avalonia.Base/Data/Core/ExpressionNodeBuilder.cs
  21. 45
      src/Avalonia.Base/Data/Core/ExpressionObserver.cs
  22. 4
      src/Avalonia.Base/Data/Core/ExpressionParseException.cs
  23. 2
      src/Avalonia.Base/Data/Core/ISettableNode.cs
  24. 2
      src/Avalonia.Base/Data/Core/ITransformNode.cs
  25. 2
      src/Avalonia.Base/Data/Core/IndexerNode.cs
  26. 2
      src/Avalonia.Base/Data/Core/LogicalNotNode.cs
  27. 3
      src/Avalonia.Base/Data/Core/MarkupBindingChainException.cs
  28. 2
      src/Avalonia.Base/Data/Core/Parsers/ArgumentListParser.cs
  29. 2
      src/Avalonia.Base/Data/Core/Parsers/ExpressionParser.cs
  30. 2
      src/Avalonia.Base/Data/Core/Parsers/IdentifierParser.cs
  31. 2
      src/Avalonia.Base/Data/Core/Parsers/Reader.cs
  32. 2
      src/Avalonia.Base/Data/Core/Plugins/AvaloniaPropertyAccessorPlugin.cs
  33. 2
      src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs
  34. 2
      src/Avalonia.Base/Data/Core/Plugins/DataValidatiorBase.cs
  35. 2
      src/Avalonia.Base/Data/Core/Plugins/ExceptionValidationPlugin.cs
  36. 2
      src/Avalonia.Base/Data/Core/Plugins/IDataValidationPlugin.cs
  37. 2
      src/Avalonia.Base/Data/Core/Plugins/IPropertyAccessor.cs
  38. 2
      src/Avalonia.Base/Data/Core/Plugins/IPropertyAccessorPlugin.cs
  39. 2
      src/Avalonia.Base/Data/Core/Plugins/IStreamPlugin.cs
  40. 2
      src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs
  41. 2
      src/Avalonia.Base/Data/Core/Plugins/InpcPropertyAccessorPlugin.cs
  42. 2
      src/Avalonia.Base/Data/Core/Plugins/MethodAccessorPlugin.cs
  43. 2
      src/Avalonia.Base/Data/Core/Plugins/ObservableStreamPlugin.cs
  44. 2
      src/Avalonia.Base/Data/Core/Plugins/PropertyAccessorBase.cs
  45. 2
      src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs
  46. 2
      src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs
  47. 4
      src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs
  48. 2
      src/Avalonia.Base/Data/Core/StreamNode.cs
  49. 3
      src/Avalonia.Base/Properties/AssemblyInfo.cs
  50. 6
      src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj
  51. 2
      src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs
  52. 2
      src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs
  53. 4
      src/Markup/Avalonia.Markup.Xaml/Converters/SelectorTypeConverter.cs
  54. 3
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs
  55. 2
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs
  56. 2
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs
  57. 2
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs
  58. 5
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/TemplateBindingExtension.cs
  59. 3
      src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaRuntimeTypeProvider.cs
  60. 2
      src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlSchemaContext.cs
  61. 2
      src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs
  62. 2
      src/Markup/Avalonia.Markup.Xaml/Properties/AssemblyInfo.cs
  63. 2
      src/Markup/Avalonia.Markup.Xaml/Templates/MemberSelector.cs
  64. 7
      src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs
  65. 6
      src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
  66. 7
      src/Markup/Avalonia.Markup/Data/Binding.cs
  67. 2
      src/Markup/Avalonia.Markup/Data/DelayedBinding.cs
  68. 3
      src/Markup/Avalonia.Markup/Data/MultiBinding.cs
  69. 3
      src/Markup/Avalonia.Markup/Data/RelativeSource.cs
  70. 2
      src/Markup/Avalonia.Markup/Parsers/SelectorGrammar.cs
  71. 2
      src/Markup/Avalonia.Markup/Parsers/SelectorParser.cs
  72. 2
      src/Markup/Avalonia.Markup/Properties/AssemblyInfo.cs
  73. 2
      tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs
  74. 2
      tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs
  75. 3
      tests/Avalonia.Base.UnitTests/Collections/AvaloniaDictionaryTests.cs
  76. 5
      tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs
  77. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionNodeBuilderTests.cs
  78. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionNodeBuilderTests_Errors.cs
  79. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_AttachedProperty.cs
  80. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_AvaloniaProperty.cs
  81. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_DataValidation.cs
  82. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Indexer.cs
  83. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Lifetime.cs
  84. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Method.cs
  85. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Negation.cs
  86. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Observable.cs
  87. 6
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Property.cs
  88. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_SetValue.cs
  89. 4
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Task.cs
  90. 2
      tests/Avalonia.Base.UnitTests/Data/Core/IndeiBase.cs
  91. 2
      tests/Avalonia.Base.UnitTests/Data/Core/Plugins/DataAnnotationsValidationPluginTests.cs
  92. 4
      tests/Avalonia.Base.UnitTests/Data/Core/Plugins/ExceptionValidationPluginTests.cs
  93. 4
      tests/Avalonia.Base.UnitTests/Data/Core/Plugins/IndeiValidationPluginTests.cs
  94. 3
      tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs
  95. 2
      tests/Avalonia.Base.UnitTests/Data/UnitTestSynchronizationContext.cs
  96. 2
      tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs
  97. 2
      tests/Avalonia.Controls.UnitTests/ButtonTests.cs
  98. 2
      tests/Avalonia.Controls.UnitTests/ContentControlTests.cs
  99. 2
      tests/Avalonia.Controls.UnitTests/DatePickerTests.cs
  100. 2
      tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

2
Avalonia.sln

@ -138,6 +138,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{74487168
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1-27F5-4255-9AFC-04ABFD11683A}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1-27F5-4255-9AFC-04ABFD11683A}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
build\Base.props = build\Base.props
build\Binding.props = build\Binding.props
build\JetBrains.Annotations.props = build\JetBrains.Annotations.props build\JetBrains.Annotations.props = build\JetBrains.Annotations.props
build\JetBrains.dotMemoryUnit.props = build\JetBrains.dotMemoryUnit.props build\JetBrains.dotMemoryUnit.props = build\JetBrains.dotMemoryUnit.props
build\Magick.NET-Q16-AnyCPU.props = build\Magick.NET-Q16-AnyCPU.props build\Magick.NET-Q16-AnyCPU.props = build\Magick.NET-Q16-AnyCPU.props

8
build/Binding.props

@ -0,0 +1,8 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PackageReference Include="System.ComponentModel.Annotations" Version="4.3.0" />
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
<PackageReference Include="System.ComponentModel.Primitives" Version="4.3.0" />
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
</ItemGroup>
</Project>

3
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs

@ -2,12 +2,13 @@ using Avalonia.Controls;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Avalonia.Markup; using Avalonia.Markup;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data.Converters;
namespace ControlCatalog.Pages namespace ControlCatalog.Pages
{ {

7
src/Android/Avalonia.Android/Resources/Resource.Designer.cs

@ -40,11 +40,14 @@ namespace Avalonia.Android
public partial class String public partial class String
{ {
// aapt resource value: 0x7f020002
public static int ApplicationName = 2130837506;
// aapt resource value: 0x7f020001 // aapt resource value: 0x7f020001
public static int ApplicationName = 2130837505; public static int Hello = 2130837505;
// aapt resource value: 0x7f020000 // aapt resource value: 0x7f020000
public static int Hello = 2130837504; public static int library_name = 2130837504;
static String() static String()
{ {

1
src/Avalonia.Base/Avalonia.Base.csproj

@ -5,6 +5,7 @@
<RootNamespace>Avalonia</RootNamespace> <RootNamespace>Avalonia</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\Base.props" /> <Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\Binding.props" />
<Import Project="..\..\build\Rx.props" /> <Import Project="..\..\build\Rx.props" />
<Import Project="..\..\build\JetBrains.Annotations.props" /> <Import Project="..\..\build\JetBrains.Annotations.props" />
</Project> </Project>

5
src/Avalonia.Base/Collections/AvaloniaDictionary.cs

@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.ComponentModel; using System.ComponentModel;
using System.Linq; using System.Linq;
using Avalonia.Data.Core;
namespace Avalonia.Collections namespace Avalonia.Collections
{ {
@ -116,8 +117,8 @@ namespace Avalonia.Collections
_inner = new Dictionary<TKey, TValue>(); _inner = new Dictionary<TKey, TValue>();
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Count")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Count)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(CommonPropertyNames.IndexerName));
if (CollectionChanged != null) if (CollectionChanged != null)

3
src/Avalonia.Base/Data/BindingNotification.cs

@ -171,8 +171,7 @@ namespace Avalonia.Data
/// </remarks> /// </remarks>
public static object ExtractError(object o) public static object ExtractError(object o)
{ {
var notification = o as BindingNotification; return o is BindingNotification notification ? notification.Error : o;
return notification != null ? notification.Error : o;
} }
/// <summary> /// <summary>

2
src/Markup/Avalonia.Markup/AlwaysEnabledDelegateCommand.cs → src/Avalonia.Base/Data/Converters/AlwaysEnabledDelegateCommand.cs

@ -6,7 +6,7 @@ using System.Reflection;
using System.Text; using System.Text;
using System.Windows.Input; using System.Windows.Input;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
class AlwaysEnabledDelegateCommand : ICommand class AlwaysEnabledDelegateCommand : ICommand
{ {

2
src/Markup/Avalonia.Markup/BoolConverters.cs → src/Avalonia.Base/Data/Converters/BoolConverters.cs

@ -3,7 +3,7 @@
using System.Linq; using System.Linq;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// Provides a set of useful <see cref="IValueConverter"/>s for working with string values. /// Provides a set of useful <see cref="IValueConverter"/>s for working with string values.

2
src/Markup/Avalonia.Markup/DefaultValueConverter.cs → src/Avalonia.Base/Data/Converters/DefaultValueConverter.cs

@ -7,7 +7,7 @@ using Avalonia.Data;
using Avalonia.Utilities; using Avalonia.Utilities;
using System.Windows.Input; using System.Windows.Input;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// Provides a default set of value conversions for bindings that do not specify a value /// Provides a default set of value conversions for bindings that do not specify a value

2
src/Markup/Avalonia.Markup/FuncMultiValueConverter.cs → src/Avalonia.Base/Data/Converters/FuncMultiValueConverter.cs

@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// A general purpose <see cref="IValueConverter"/> that uses a <see cref="Func{T1, TResult}"/> /// A general purpose <see cref="IValueConverter"/> that uses a <see cref="Func{T1, TResult}"/>

2
src/Markup/Avalonia.Markup/FuncValueConverter.cs → src/Avalonia.Base/Data/Converters/FuncValueConverter.cs

@ -5,7 +5,7 @@ using System;
using System.Globalization; using System.Globalization;
using Avalonia.Utilities; using Avalonia.Utilities;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// A general purpose <see cref="IValueConverter"/> that uses a <see cref="Func{T1, TResult}"/> /// A general purpose <see cref="IValueConverter"/> that uses a <see cref="Func{T1, TResult}"/>

2
src/Markup/Avalonia.Markup/IMultiValueConverter.cs → src/Avalonia.Base/Data/Converters/IMultiValueConverter.cs

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// Converts multi-binding inputs to a final value. /// Converts multi-binding inputs to a final value.

2
src/Markup/Avalonia.Markup/IValueConverter.cs → src/Avalonia.Base/Data/Converters/IValueConverter.cs

@ -5,7 +5,7 @@ using System;
using System.Globalization; using System.Globalization;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// Converts a binding value. /// Converts a binding value.

2
src/Markup/Avalonia.Markup/StringConverters.cs → src/Avalonia.Base/Data/Converters/StringConverters.cs

@ -5,7 +5,7 @@ using System;
using System.Globalization; using System.Globalization;
using Avalonia.Utilities; using Avalonia.Utilities;
namespace Avalonia.Markup namespace Avalonia.Data.Converters
{ {
/// <summary> /// <summary>
/// Provides a set of useful <see cref="IValueConverter"/>s for working with string values. /// Provides a set of useful <see cref="IValueConverter"/>s for working with string values.

4
src/Markup/Avalonia.Markup/Data/BindingExpression.cs → src/Avalonia.Base/Data/Core/BindingExpression.cs

@ -5,11 +5,11 @@ using System;
using System.Globalization; using System.Globalization;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Data; using Avalonia.Data.Converters;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Utilities; using Avalonia.Utilities;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
/// <summary> /// <summary>
/// Binds to an expression on an object using a type value converter to convert the values /// Binds to an expression on an object using a type value converter to convert the values

2
src/Markup/Avalonia.Markup/Data/CommonPropertyNames.cs → src/Avalonia.Base/Data/Core/CommonPropertyNames.cs

@ -1,7 +1,7 @@
// Copyright (c) The Avalonia Project. All rights reserved. // Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
public static class CommonPropertyNames public static class CommonPropertyNames
{ {

2
src/Markup/Avalonia.Markup/Data/EmptyExpressionNode.cs → src/Avalonia.Base/Data/Core/EmptyExpressionNode.cs

@ -4,7 +4,7 @@
using System; using System;
using System.Reactive.Linq; using System.Reactive.Linq;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class EmptyExpressionNode : ExpressionNode internal class EmptyExpressionNode : ExpressionNode
{ {

2
src/Markup/Avalonia.Markup/Data/ExpressionNode.cs → src/Avalonia.Base/Data/Core/ExpressionNode.cs

@ -7,7 +7,7 @@ using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal abstract class ExpressionNode : ISubject<object> internal abstract class ExpressionNode : ISubject<object>
{ {

4
src/Markup/Avalonia.Markup/Data/ExpressionNodeBuilder.cs → src/Avalonia.Base/Data/Core/ExpressionNodeBuilder.cs

@ -2,9 +2,9 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using System; using System;
using Avalonia.Markup.Data.Parsers; using Avalonia.Data.Core.Parsers;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal static class ExpressionNodeBuilder internal static class ExpressionNodeBuilder
{ {

45
src/Markup/Avalonia.Markup/Data/ExpressionObserver.cs → src/Avalonia.Base/Data/Core/ExpressionObserver.cs

@ -8,9 +8,9 @@ using System.Reactive.Disposables;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data.Plugins; using Avalonia.Data.Core.Plugins;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
/// <summary> /// <summary>
/// Observes and sets the value of an expression on an object. /// Observes and sets the value of an expression on an object.
@ -245,40 +245,35 @@ namespace Avalonia.Markup.Data
private object Translate(object o) private object Translate(object o)
{ {
var weak = o as WeakReference; if (o is WeakReference weak)
if (weak != null)
{ {
return weak.Target; return weak.Target;
} }
else else if (BindingNotification.ExtractError(o) is MarkupBindingChainException broken)
{ {
var broken = BindingNotification.ExtractError(o) as MarkupBindingChainException; broken.Commit(Description);
if (broken != null)
{
broken.Commit(Description);
}
return o;
} }
return o;
} }
private IDisposable StartRoot() private IDisposable StartRoot()
{ {
var observable = _root as IObservable<object>; switch (_root)
if (observable != null)
{ {
return observable.Subscribe( case IObservable<object> observable:
x => _node.Target = new WeakReference(x != AvaloniaProperty.UnsetValue ? x : null), return observable.Subscribe(
_ => _finished.OnNext(Unit.Default), x => _node.Target = new WeakReference(x != AvaloniaProperty.UnsetValue ? x : null),
() => _finished.OnNext(Unit.Default)); _ => _finished.OnNext(Unit.Default),
} () => _finished.OnNext(Unit.Default));
else case WeakReference weak:
{ _node.Target = weak;
_node.Target = (WeakReference)_root; break;
return Disposable.Empty; default:
throw new AvaloniaInternalException("The ExpressionObserver._root member should only be either an observable or WeakReference.");
} }
return Disposable.Empty;
} }
} }
} }

4
src/Markup/Avalonia.Markup/Data/ExpressionParseException.cs → src/Avalonia.Base/Data/Core/ExpressionParseException.cs

@ -2,9 +2,9 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using System; using System;
using Avalonia.Markup.Data.Parsers; using Avalonia.Data.Core.Parsers;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
/// <summary> /// <summary>
/// Exception thrown when <see cref="ExpressionObserver"/> could not parse the provided /// Exception thrown when <see cref="ExpressionObserver"/> could not parse the provided

2
src/Markup/Avalonia.Markup/Data/ISettableNode.cs → src/Avalonia.Base/Data/Core/ISettableNode.cs

@ -5,7 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
interface ISettableNode interface ISettableNode
{ {

2
src/Markup/Avalonia.Markup/Data/ITransformNode.cs → src/Avalonia.Base/Data/Core/ITransformNode.cs

@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
interface ITransformNode interface ITransformNode
{ {

2
src/Markup/Avalonia.Markup/Data/IndexerNode.cs → src/Avalonia.Base/Data/Core/IndexerNode.cs

@ -13,7 +13,7 @@ using System.Reflection;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class IndexerNode : ExpressionNode, ISettableNode internal class IndexerNode : ExpressionNode, ISettableNode
{ {

2
src/Markup/Avalonia.Markup/Data/LogicalNotNode.cs → src/Avalonia.Base/Data/Core/LogicalNotNode.cs

@ -5,7 +5,7 @@ using System;
using System.Globalization; using System.Globalization;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class LogicalNotNode : ExpressionNode, ITransformNode internal class LogicalNotNode : ExpressionNode, ITransformNode
{ {

3
src/Markup/Avalonia.Markup/Data/MarkupBindingChainException.cs → src/Avalonia.Base/Data/Core/MarkupBindingChainException.cs

@ -1,9 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Avalonia.Data;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class MarkupBindingChainException : BindingChainException internal class MarkupBindingChainException : BindingChainException
{ {

2
src/Markup/Avalonia.Markup/Data/Parsers/ArgumentListParser.cs → src/Avalonia.Base/Data/Core/Parsers/ArgumentListParser.cs

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace Avalonia.Markup.Data.Parsers namespace Avalonia.Data.Core.Parsers
{ {
internal static class ArgumentListParser internal static class ArgumentListParser
{ {

2
src/Markup/Avalonia.Markup/Data/Parsers/ExpressionParser.cs → src/Avalonia.Base/Data/Core/Parsers/ExpressionParser.cs

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace Avalonia.Markup.Data.Parsers namespace Avalonia.Data.Core.Parsers
{ {
internal class ExpressionParser internal class ExpressionParser
{ {

2
src/Markup/Avalonia.Markup/Data/Parsers/IdentifierParser.cs → src/Avalonia.Base/Data/Core/Parsers/IdentifierParser.cs

@ -4,7 +4,7 @@
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
namespace Avalonia.Markup.Data.Parsers namespace Avalonia.Data.Core.Parsers
{ {
internal static class IdentifierParser internal static class IdentifierParser
{ {

2
src/Markup/Avalonia.Markup/Data/Parsers/Reader.cs → src/Avalonia.Base/Data/Core/Parsers/Reader.cs

@ -3,7 +3,7 @@
using System; using System;
namespace Avalonia.Markup.Data.Parsers namespace Avalonia.Data.Core.Parsers
{ {
internal class Reader internal class Reader
{ {

2
src/Markup/Avalonia.Markup/Data/Plugins/AvaloniaPropertyAccessorPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/AvaloniaPropertyAccessorPlugin.cs

@ -6,7 +6,7 @@ using System.Linq;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Reads a property from a <see cref="AvaloniaObject"/>. /// Reads a property from a <see cref="AvaloniaObject"/>.

2
src/Markup/Avalonia.Markup/Data/Plugins/DataAnnotationsValidationPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs

@ -8,7 +8,7 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Validates properties on that have <see cref="ValidationAttribute"/>s. /// Validates properties on that have <see cref="ValidationAttribute"/>s.

2
src/Markup/Avalonia.Markup/Data/Plugins/DataValidatiorBase.cs → src/Avalonia.Base/Data/Core/Plugins/DataValidatiorBase.cs

@ -4,7 +4,7 @@
using System; using System;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Base class for data validators. /// Base class for data validators.

2
src/Markup/Avalonia.Markup/Data/Plugins/ExceptionValidationPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/ExceptionValidationPlugin.cs

@ -5,7 +5,7 @@ using Avalonia.Data;
using System; using System;
using System.Reflection; using System.Reflection;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Validates properties that report errors by throwing exceptions. /// Validates properties that report errors by throwing exceptions.

2
src/Markup/Avalonia.Markup/Data/Plugins/IDataValidationPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/IDataValidationPlugin.cs

@ -4,7 +4,7 @@
using System; using System;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Defines how data validation is observed by an <see cref="ExpressionObserver"/>. /// Defines how data validation is observed by an <see cref="ExpressionObserver"/>.

2
src/Markup/Avalonia.Markup/Data/Plugins/IPropertyAccessor.cs → src/Avalonia.Base/Data/Core/Plugins/IPropertyAccessor.cs

@ -4,7 +4,7 @@
using System; using System;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Defines an accessor to a property on an object returned by a /// Defines an accessor to a property on an object returned by a

2
src/Markup/Avalonia.Markup/Data/Plugins/IPropertyAccessorPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/IPropertyAccessorPlugin.cs

@ -3,7 +3,7 @@
using System; using System;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Defines how a member is read, written and observed by an /// Defines how a member is read, written and observed by an

2
src/Markup/Avalonia.Markup/Data/Plugins/IStreamPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/IStreamPlugin.cs

@ -3,7 +3,7 @@
using System; using System;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Defines a plugin that handles the '^' stream binding operator. /// Defines a plugin that handles the '^' stream binding operator.

2
src/Markup/Avalonia.Markup/Data/Plugins/IndeiValidationPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs

@ -8,7 +8,7 @@ using System.Linq;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Utilities; using Avalonia.Utilities;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Validates properties on objects that implement <see cref="INotifyDataErrorInfo"/>. /// Validates properties on objects that implement <see cref="INotifyDataErrorInfo"/>.

2
src/Markup/Avalonia.Markup/Data/Plugins/InpcPropertyAccessorPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/InpcPropertyAccessorPlugin.cs

@ -10,7 +10,7 @@ using Avalonia.Data;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Utilities; using Avalonia.Utilities;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Reads a property from a standard C# object that optionally supports the /// Reads a property from a standard C# object that optionally supports the

2
src/Markup/Avalonia.Markup/Data/Plugins/MethodAccessorPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/MethodAccessorPlugin.cs

@ -5,7 +5,7 @@ using Avalonia.Data;
using System.Reflection; using System.Reflection;
using System.Linq; using System.Linq;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
class MethodAccessorPlugin : IPropertyAccessorPlugin class MethodAccessorPlugin : IPropertyAccessorPlugin
{ {

2
src/Markup/Avalonia.Markup/Data/Plugins/ObservableStreamPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/ObservableStreamPlugin.cs

@ -3,7 +3,7 @@
using System; using System;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Handles binding to <see cref="IObservable{T}"/>s for the '^' stream binding operator. /// Handles binding to <see cref="IObservable{T}"/>s for the '^' stream binding operator.

2
src/Markup/Avalonia.Markup/Data/Plugins/PropertyAccessorBase.cs → src/Avalonia.Base/Data/Core/Plugins/PropertyAccessorBase.cs

@ -4,7 +4,7 @@
using System; using System;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Defines a default base implementation for a <see cref="IPropertyAccessor"/>. /// Defines a default base implementation for a <see cref="IPropertyAccessor"/>.

2
src/Markup/Avalonia.Markup/Data/Plugins/PropertyError.cs → src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs

@ -2,7 +2,7 @@ using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// An <see cref="IPropertyAccessor"/> that represents an error. /// An <see cref="IPropertyAccessor"/> that represents an error.

2
src/Markup/Avalonia.Markup/Data/Plugins/TaskStreamPlugin.cs → src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs

@ -9,7 +9,7 @@ using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data; using Avalonia.Data;
namespace Avalonia.Markup.Data.Plugins namespace Avalonia.Data.Core.Plugins
{ {
/// <summary> /// <summary>
/// Handles binding to <see cref="Task"/>s for the '^' stream binding operator. /// Handles binding to <see cref="Task"/>s for the '^' stream binding operator.

4
src/Markup/Avalonia.Markup/Data/PropertyAccessorNode.cs → src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs

@ -6,9 +6,9 @@ using System.Linq;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data.Plugins; using Avalonia.Data.Core.Plugins;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class PropertyAccessorNode : ExpressionNode, ISettableNode internal class PropertyAccessorNode : ExpressionNode, ISettableNode
{ {

2
src/Markup/Avalonia.Markup/Data/StreamNode.cs → src/Avalonia.Base/Data/Core/StreamNode.cs

@ -6,7 +6,7 @@ using System.Globalization;
using Avalonia.Data; using Avalonia.Data;
using System.Reactive.Linq; using System.Reactive.Linq;
namespace Avalonia.Markup.Data namespace Avalonia.Data.Core
{ {
internal class StreamNode : ExpressionNode internal class StreamNode : ExpressionNode
{ {

3
src/Avalonia.Base/Properties/AssemblyInfo.cs

@ -1,9 +1,10 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Avalonia.Metadata;
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Data.Converters")]
[assembly: InternalsVisibleTo("Avalonia.Base.UnitTests")] [assembly: InternalsVisibleTo("Avalonia.Base.UnitTests")]
[assembly: InternalsVisibleTo("Avalonia.UnitTests")] [assembly: InternalsVisibleTo("Avalonia.UnitTests")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

6
src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj

@ -32,6 +32,7 @@
<Compile Include="Converters\TimeSpanTypeConverter.cs" /> <Compile Include="Converters\TimeSpanTypeConverter.cs" />
<Compile Include="Data\ResourceInclude.cs" /> <Compile Include="Data\ResourceInclude.cs" />
<Compile Include="MarkupExtensions\DynamicResourceExtension.cs" /> <Compile Include="MarkupExtensions\DynamicResourceExtension.cs" />
<Compile Include="MarkupExtensions\ResourceInclude.cs" />
<Compile Include="MarkupExtensions\StaticResourceExtension.cs" /> <Compile Include="MarkupExtensions\StaticResourceExtension.cs" />
<Compile Include="MarkupExtensions\StyleIncludeExtension.cs" /> <Compile Include="MarkupExtensions\StyleIncludeExtension.cs" />
<Compile Include="PortableXaml\AvaloniaXamlContext.cs" /> <Compile Include="PortableXaml\AvaloniaXamlContext.cs" />
@ -51,11 +52,11 @@
<Compile Include="Data\DelayedBinding.cs" /> <Compile Include="Data\DelayedBinding.cs" />
<Compile Include="Data\MultiBinding.cs" /> <Compile Include="Data\MultiBinding.cs" />
<Compile Include="Data\RelativeSource.cs" /> <Compile Include="Data\RelativeSource.cs" />
<Compile Include="Converters\ThicknessTypeConverter.cs" />
<Compile Include="Converters\TimeSpanTypeConverter.cs" />
<Compile Include="MarkupExtensions\BindingExtension.cs" /> <Compile Include="MarkupExtensions\BindingExtension.cs" />
<Compile Include="MarkupExtensions\RelativeSourceExtension.cs" /> <Compile Include="MarkupExtensions\RelativeSourceExtension.cs" />
<Compile Include="MarkupExtensions\TemplateBindingExtension.cs" /> <Compile Include="MarkupExtensions\TemplateBindingExtension.cs" />
<Compile Include="Parsers\SelectorGrammar.cs" />
<Compile Include="Parsers\SelectorParser.cs" />
<Compile Include="PortableXaml\AvaloniaTypeAttributeProvider.cs" /> <Compile Include="PortableXaml\AvaloniaTypeAttributeProvider.cs" />
<Compile Include="PortableXaml\AvaloniaXamlType.cs" /> <Compile Include="PortableXaml\AvaloniaXamlType.cs" />
<Compile Include="PortableXaml\TypeDescriptorExtensions.cs" /> <Compile Include="PortableXaml\TypeDescriptorExtensions.cs" />
@ -86,6 +87,5 @@
<ProjectReference Include="..\Avalonia.Markup\Avalonia.Markup.csproj" /> <ProjectReference Include="..\Avalonia.Markup\Avalonia.Markup.csproj" />
</ItemGroup> </ItemGroup>
<Import Project="..\..\..\build\Markup.props" /> <Import Project="..\..\..\build\Markup.props" />
<Import Project="..\..\..\build\Sprache.props" />
<Import Project="..\..\..\build\Rx.props" /> <Import Project="..\..\..\build\Rx.props" />
</Project> </Project>

2
src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs

@ -2,7 +2,7 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Markup.Xaml.PortableXaml; using Avalonia.Markup.Xaml.PortableXaml;
using Avalonia.Platform; using Avalonia.Platform;
using Portable.Xaml; using Portable.Xaml;

2
src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs

@ -10,7 +10,7 @@ namespace Avalonia.Markup.Xaml.Converters
using Avalonia.Styling; using Avalonia.Styling;
using Portable.Xaml; using Portable.Xaml;
using Portable.Xaml.ComponentModel; using Portable.Xaml.ComponentModel;
using System.ComponentModel; using System.ComponentModel;
using Portable.Xaml.Markup; using Portable.Xaml.Markup;
public class AvaloniaPropertyTypeConverter : TypeConverter public class AvaloniaPropertyTypeConverter : TypeConverter

4
src/Markup/Avalonia.Markup.Xaml/Converters/SelectorTypeConverter.cs

@ -3,12 +3,12 @@
using System; using System;
using System.Globalization; using System.Globalization;
using Avalonia.Markup.Xaml.Parsers; using Avalonia.Markup.Parsers;
namespace Avalonia.Markup.Xaml.Converters namespace Avalonia.Markup.Xaml.Converters
{ {
using Portable.Xaml.ComponentModel; using Portable.Xaml.ComponentModel;
using System.ComponentModel; using System.ComponentModel;
public class SelectorTypeConverter : TypeConverter public class SelectorTypeConverter : TypeConverter
{ {

3
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs

@ -2,12 +2,13 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Data;
using System; using System;
namespace Avalonia.Markup.Xaml.MarkupExtensions namespace Avalonia.Markup.Xaml.MarkupExtensions
{ {
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data.Converters;
using Avalonia.Markup.Data;
using Avalonia.Styling; using Avalonia.Styling;
using Portable.Xaml; using Portable.Xaml;
using Portable.Xaml.ComponentModel; using Portable.Xaml.ComponentModel;

2
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs

@ -1,7 +1,7 @@
// Copyright (c) The Avalonia Project. All rights reserved. // Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
namespace Avalonia.Markup.Xaml.MarkupExtensions namespace Avalonia.Markup.Xaml.MarkupExtensions
{ {

2
src/Markup/Avalonia.Markup.Xaml/Data/ResourceInclude.cs → src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs

@ -4,7 +4,7 @@ using Avalonia.Controls;
using Portable.Xaml.ComponentModel; using Portable.Xaml.ComponentModel;
using Portable.Xaml.Markup; using Portable.Xaml.Markup;
namespace Avalonia.Markup.Xaml.Data namespace Avalonia.Markup.Xaml.MarkupExtensions
{ {
/// <summary> /// <summary>
/// Loads a resource dictionary from a specified URL. /// Loads a resource dictionary from a specified URL.

2
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs

@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Reflection; using System.Reflection;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Portable.Xaml; using Portable.Xaml;
using Portable.Xaml.ComponentModel; using Portable.Xaml.ComponentModel;
using Portable.Xaml.Markup; using Portable.Xaml.Markup;

5
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/TemplateBindingExtension.cs

@ -2,14 +2,15 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Data;
namespace Avalonia.Markup.Xaml.MarkupExtensions namespace Avalonia.Markup.Xaml.MarkupExtensions
{ {
using System; using System;
using Avalonia.Data.Converters;
using Avalonia.Markup.Data;
using Portable.Xaml.Markup; using Portable.Xaml.Markup;
[MarkupExtensionReturnType(typeof(Binding))] [MarkupExtensionReturnType(typeof(IBinding))]
public class TemplateBindingExtension : MarkupExtension public class TemplateBindingExtension : MarkupExtension
{ {
public TemplateBindingExtension() public TemplateBindingExtension()

3
src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaRuntimeTypeProvider.cs

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Data;
using Avalonia.Markup.Xaml.Templates; using Avalonia.Markup.Xaml.Templates;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Metadata; using Avalonia.Metadata;
@ -35,7 +36,7 @@ namespace Avalonia.Markup.Xaml.Context
typeof(Style).GetTypeInfo().Assembly, typeof(Style).GetTypeInfo().Assembly,
typeof(DataTemplate).GetTypeInfo().Assembly, typeof(DataTemplate).GetTypeInfo().Assembly,
typeof(SolidColorBrush).GetTypeInfo().Assembly, typeof(SolidColorBrush).GetTypeInfo().Assembly,
typeof(IValueConverter).GetTypeInfo().Assembly, typeof(Binding).GetTypeInfo().Assembly,
}; };
private Dictionary<string, HashSet<ClrNamespaceInfo>> _namespaces = new Dictionary<string, HashSet<ClrNamespaceInfo>>(); private Dictionary<string, HashSet<ClrNamespaceInfo>> _namespaces = new Dictionary<string, HashSet<ClrNamespaceInfo>>();

2
src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlSchemaContext.cs

@ -1,6 +1,6 @@
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Context; using Avalonia.Markup.Xaml.Context;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Markup.Xaml.MarkupExtensions;
using Avalonia.Markup.Xaml.Styling; using Avalonia.Markup.Xaml.Styling;
using Portable.Xaml; using Portable.Xaml;

2
src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs

@ -1,6 +1,6 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Metadata; using Avalonia.Metadata;
using Avalonia.Styling; using Avalonia.Styling;
using Portable.Xaml; using Portable.Xaml;

2
src/Markup/Avalonia.Markup.Xaml/Properties/AssemblyInfo.cs

@ -5,10 +5,8 @@ using System.Reflection;
using Avalonia.Metadata; using Avalonia.Metadata;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.Data")]
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.MarkupExtensions")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.MarkupExtensions")]
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.Styling")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.Styling")]
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.Templates")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Xaml.Templates")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "Avalonia.Markup.Xaml.MarkupExtensions.Standard")]
[assembly: InternalsVisibleTo("Avalonia.Markup.Xaml.UnitTests")] [assembly: InternalsVisibleTo("Avalonia.Markup.Xaml.UnitTests")]

2
src/Markup/Avalonia.Markup.Xaml/Templates/MemberSelector.cs

@ -3,7 +3,7 @@
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using System; using System;
using System.Reactive.Linq; using System.Reactive.Linq;

7
src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs

@ -6,8 +6,8 @@ using System.Reflection;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Data.Core;
using Avalonia.Markup.Data; using Avalonia.Markup.Data;
using Avalonia.Markup.Xaml.Data;
using Avalonia.Metadata; using Avalonia.Metadata;
namespace Avalonia.Markup.Xaml.Templates namespace Avalonia.Markup.Xaml.Templates
@ -48,11 +48,6 @@ namespace Avalonia.Markup.Xaml.Templates
return null; return null;
} }
public bool IsExpanded(object item)
{
return true;
}
public IControl Build(object data) public IControl Build(object data)
{ {
var visualTreeForItem = TemplateContent.Load(Content); var visualTreeForItem = TemplateContent.Load(Content);

6
src/Markup/Avalonia.Markup/Avalonia.Markup.csproj

@ -4,7 +4,11 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" /> <ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" />
<ProjectReference Include="..\..\Avalonia.Controls\Avalonia.Controls.csproj" />
<ProjectReference Include="..\..\Avalonia.Input\Avalonia.Input.csproj" />
<ProjectReference Include="..\..\Avalonia.Styling\Avalonia.Styling.csproj" />
<ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
</ItemGroup> </ItemGroup>
<Import Project="..\..\..\build\Markup.props" />
<Import Project="..\..\..\build\Rx.props" /> <Import Project="..\..\..\build\Rx.props" />
<Import Project="..\..\..\build\Sprache.props" />
</Project> </Project>

7
src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs → src/Markup/Avalonia.Markup/Data/Binding.cs

@ -8,11 +8,12 @@ using System.Reactive.Linq;
using System.Reflection; using System.Reflection;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Data.Converters;
using Avalonia.Data.Core;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Avalonia.Markup.Data;
using Avalonia.VisualTree; using Avalonia.VisualTree;
namespace Avalonia.Markup.Xaml.Data namespace Avalonia.Markup.Data
{ {
/// <summary> /// <summary>
/// A XAML binding. /// A XAML binding.
@ -84,7 +85,7 @@ namespace Avalonia.Markup.Xaml.Data
/// </summary> /// </summary>
public object Source { get; set; } public object Source { get; set; }
internal WeakReference DefaultAnchor { get; set; } public WeakReference DefaultAnchor { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
public InstancedBinding Initiate( public InstancedBinding Initiate(

2
src/Markup/Avalonia.Markup.Xaml/Data/DelayedBinding.cs → src/Markup/Avalonia.Markup/Data/DelayedBinding.cs

@ -9,7 +9,7 @@ using Avalonia.Controls;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Logging; using Avalonia.Logging;
namespace Avalonia.Markup.Xaml.Data namespace Avalonia.Markup.Data
{ {
/// <summary> /// <summary>
/// Provides delayed bindings for controls. /// Provides delayed bindings for controls.

3
src/Markup/Avalonia.Markup.Xaml/Data/MultiBinding.cs → src/Markup/Avalonia.Markup/Data/MultiBinding.cs

@ -9,9 +9,10 @@ using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Data.Converters;
using Avalonia.Metadata; using Avalonia.Metadata;
namespace Avalonia.Markup.Xaml.Data namespace Avalonia.Markup.Data
{ {
/// <summary> /// <summary>
/// A XAML binding that calculates an aggregate value from multiple child <see cref="Bindings"/>. /// A XAML binding that calculates an aggregate value from multiple child <see cref="Bindings"/>.

3
src/Markup/Avalonia.Markup.Xaml/Data/RelativeSource.cs → src/Markup/Avalonia.Markup/Data/RelativeSource.cs

@ -2,8 +2,9 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using System; using System;
using Avalonia.Controls;
namespace Avalonia.Markup.Xaml.Data namespace Avalonia.Markup.Data
{ {
/// <summary> /// <summary>
/// Defines the mode of a <see cref="RelativeSource"/> object. /// Defines the mode of a <see cref="RelativeSource"/> object.

2
src/Markup/Avalonia.Markup.Xaml/Parsers/SelectorGrammar.cs → src/Markup/Avalonia.Markup/Parsers/SelectorGrammar.cs

@ -9,7 +9,7 @@ using Sprache;
// only reason they have overridden Equals methods is for unit testing. // only reason they have overridden Equals methods is for unit testing.
#pragma warning disable 659 #pragma warning disable 659
namespace Avalonia.Markup.Xaml.Parsers namespace Avalonia.Markup.Parsers
{ {
internal class SelectorGrammar internal class SelectorGrammar
{ {

2
src/Markup/Avalonia.Markup.Xaml/Parsers/SelectorParser.cs → src/Markup/Avalonia.Markup/Parsers/SelectorParser.cs

@ -7,7 +7,7 @@ using Avalonia.Styling;
using Avalonia.Utilities; using Avalonia.Utilities;
using Sprache; using Sprache;
namespace Avalonia.Markup.Xaml.Parsers namespace Avalonia.Markup.Parsers
{ {
/// <summary> /// <summary>
/// Parses a <see cref="Selector"/> from text. /// Parses a <see cref="Selector"/> from text.

2
src/Markup/Avalonia.Markup/Properties/AssemblyInfo.cs

@ -5,5 +5,5 @@ using System.Reflection;
using Avalonia.Metadata; using Avalonia.Metadata;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Markup.Data")]
[assembly: InternalsVisibleTo("Avalonia.Markup.UnitTests")] [assembly: InternalsVisibleTo("Avalonia.Markup.UnitTests")]

2
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs

@ -10,7 +10,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using Avalonia.UnitTests; using Avalonia.UnitTests;

2
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs

@ -12,7 +12,7 @@ using Avalonia.Data;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Moq; using Moq;
using Xunit; using Xunit;

3
tests/Avalonia.Base.UnitTests/Collections/AvaloniaDictionaryTests.cs

@ -4,6 +4,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Base.UnitTests.Collections namespace Avalonia.Base.UnitTests.Collections
@ -145,7 +146,7 @@ namespace Avalonia.Base.UnitTests.Collections
var tracker = new PropertyChangedTracker(target); var tracker = new PropertyChangedTracker(target);
target.Clear(); target.Clear();
Assert.Equal(new[] { "Count", "Item[]" }, tracker.Names); Assert.Equal(new[] { "Count", CommonPropertyNames.IndexerName }, tracker.Names);
} }
} }
} }

5
tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs → tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs

@ -8,12 +8,13 @@ using System.Reactive.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Converters;
using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Moq; using Moq;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class BindingExpressionTests : IClassFixture<InvariantCultureFixture> public class BindingExpressionTests : IClassFixture<InvariantCultureFixture>
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionNodeBuilderTests.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionNodeBuilderTests.cs

@ -3,10 +3,10 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionNodeBuilderTests public class ExpressionNodeBuilderTests
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionNodeBuilderTests_Errors.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionNodeBuilderTests_Errors.cs

@ -1,10 +1,10 @@
// Copyright (c) The Avalonia Project. All rights reserved. // Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionNodeBuilderTests_Errors public class ExpressionNodeBuilderTests_Errors
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_AttachedProperty.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_AttachedProperty.cs

@ -6,10 +6,10 @@ using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Diagnostics; using Avalonia.Diagnostics;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_AttachedProperty public class ExpressionObserverTests_AttachedProperty
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_AvaloniaProperty.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_AvaloniaProperty.cs

@ -6,10 +6,10 @@ using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Diagnostics; using Avalonia.Diagnostics;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_AvaloniaProperty public class ExpressionObserverTests_AvaloniaProperty
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_DataValidation.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_DataValidation.cs

@ -7,11 +7,11 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_DataValidation : IClassFixture<InvariantCultureFixture> public class ExpressionObserverTests_DataValidation : IClassFixture<InvariantCultureFixture>
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Indexer.cs

@ -8,11 +8,11 @@ using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Diagnostics; using Avalonia.Diagnostics;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Indexer public class ExpressionObserverTests_Indexer
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Lifetime.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Lifetime.cs

@ -7,10 +7,10 @@ using System.Reactive;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Microsoft.Reactive.Testing; using Microsoft.Reactive.Testing;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Lifetime public class ExpressionObserverTests_Lifetime
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Method.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Method.cs

@ -1,5 +1,5 @@
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -8,7 +8,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Method public class ExpressionObserverTests_Method
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Negation.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Negation.cs

@ -5,10 +5,10 @@ using System;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Negation public class ExpressionObserverTests_Negation
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Observable.cs

@ -6,11 +6,11 @@ using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Observable public class ExpressionObserverTests_Observable
{ {

6
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Property.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Property.cs

@ -8,12 +8,12 @@ using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Microsoft.Reactive.Testing; using Microsoft.Reactive.Testing;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Property public class ExpressionObserverTests_Property
{ {
@ -363,7 +363,7 @@ namespace Avalonia.Markup.UnitTests.Data
{ {
"bar", "bar",
new BindingNotification( new BindingNotification(
new MissingMemberException("Could not find CLR property 'Bar' on 'Avalonia.Markup.UnitTests.Data.ExpressionObserverTests_Property+WithoutBar'"), new MissingMemberException("Could not find CLR property 'Bar' on 'Avalonia.Base.UnitTests.Data.Core.ExpressionObserverTests_Property+WithoutBar'"),
BindingErrorType.Error), BindingErrorType.Error),
"baz", "baz",
}, },

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_SetValue.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_SetValue.cs

@ -4,11 +4,11 @@
using System; using System;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_SetValue public class ExpressionObserverTests_SetValue
{ {

4
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Task.cs → tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Task.cs

@ -6,11 +6,11 @@ using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data; using Avalonia.Data.Core;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
public class ExpressionObserverTests_Task public class ExpressionObserverTests_Task
{ {

2
tests/Avalonia.Markup.UnitTests/Data/IndeiBase.cs → tests/Avalonia.Base.UnitTests/Data/Core/IndeiBase.cs

@ -7,7 +7,7 @@ using System.ComponentModel;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Avalonia.UnitTests; using Avalonia.UnitTests;
namespace Avalonia.Markup.UnitTests.Data namespace Avalonia.Base.UnitTests.Data.Core
{ {
internal abstract class IndeiBase : NotifyingBase, INotifyDataErrorInfo internal abstract class IndeiBase : NotifyingBase, INotifyDataErrorInfo
{ {

2
tests/Avalonia.Markup.UnitTests/Data/Plugins/DataAnnotationsValidationPluginTests.cs → tests/Avalonia.Base.UnitTests/Data/Core/Plugins/DataAnnotationsValidationPluginTests.cs

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data.Plugins; using Avalonia.Data.Core.Plugins;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;

4
tests/Avalonia.Markup.UnitTests/Data/Plugins/ExceptionValidationPluginTests.cs → tests/Avalonia.Base.UnitTests/Data/Core/Plugins/ExceptionValidationPluginTests.cs

@ -5,11 +5,11 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data.Plugins; using Avalonia.Data.Core.Plugins;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data.Plugins namespace Avalonia.Base.UnitTests.Data.Core.Plugins
{ {
public class ExceptionValidationPluginTests public class ExceptionValidationPluginTests
{ {

4
tests/Avalonia.Markup.UnitTests/Data/Plugins/IndeiValidationPluginTests.cs → tests/Avalonia.Base.UnitTests/Data/Core/Plugins/IndeiValidationPluginTests.cs

@ -6,10 +6,10 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Data.Plugins; using Avalonia.Data.Core.Plugins;
using Xunit; using Xunit;
namespace Avalonia.Markup.UnitTests.Data.Plugins namespace Avalonia.Base.UnitTests.Data.Core.Plugins
{ {
public class IndeiValidationPluginTests public class IndeiValidationPluginTests
{ {

3
tests/Avalonia.Markup.UnitTests/DefaultValueConverterTests.cs → tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs

@ -7,8 +7,9 @@ using Avalonia.Data;
using Xunit; using Xunit;
using System.Windows.Input; using System.Windows.Input;
using System; using System;
using Avalonia.Data.Converters;
namespace Avalonia.Markup.UnitTests namespace Avalonia.Base.UnitTests.Data.Converters
{ {
public class DefaultValueConverterTests public class DefaultValueConverterTests
{ {

2
tests/Avalonia.Markup.UnitTests/UnitTestSynchronizationContext.cs → tests/Avalonia.Base.UnitTests/Data/UnitTestSynchronizationContext.cs

@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Threading; using System.Threading;
namespace Avalonia.Markup.UnitTests namespace Avalonia.Base.UnitTests.Data
{ {
internal sealed class UnitTestSynchronizationContext : SynchronizationContext internal sealed class UnitTestSynchronizationContext : SynchronizationContext
{ {

2
tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs

@ -10,7 +10,7 @@ using Avalonia.Controls.Primitives;
using Avalonia.Controls.Presenters; using Avalonia.Controls.Presenters;
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using Avalonia.UnitTests; using Avalonia.UnitTests;

2
tests/Avalonia.Controls.UnitTests/ButtonTests.cs

@ -1,6 +1,6 @@
using System; using System;
using System.Windows.Input; using System.Windows.Input;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Xunit; using Xunit;
namespace Avalonia.Controls.UnitTests namespace Avalonia.Controls.UnitTests

2
tests/Avalonia.Controls.UnitTests/ContentControlTests.cs

@ -12,7 +12,7 @@ using Avalonia.Styling;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Avalonia.VisualTree; using Avalonia.VisualTree;
using Xunit; using Xunit;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Data; using Avalonia.Data;
using System.Collections.Generic; using System.Collections.Generic;

2
tests/Avalonia.Controls.UnitTests/DatePickerTests.cs

@ -10,7 +10,7 @@ using Avalonia.Controls.Primitives;
using Avalonia.Controls.Presenters; using Avalonia.Controls.Presenters;
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Moq; using Moq;

2
tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

@ -9,7 +9,7 @@ using Avalonia.Controls.Templates;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Avalonia.Markup.Xaml.Data; using Avalonia.Markup.Data;
using Avalonia.Styling; using Avalonia.Styling;
using Avalonia.VisualTree; using Avalonia.VisualTree;
using Xunit; using Xunit;

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save