diff --git a/src/Avalonia.Controls/Avalonia.Controls.csproj b/src/Avalonia.Controls/Avalonia.Controls.csproj index c181aab1e2..3f8985aa12 100644 --- a/src/Avalonia.Controls/Avalonia.Controls.csproj +++ b/src/Avalonia.Controls/Avalonia.Controls.csproj @@ -56,7 +56,6 @@ - @@ -65,9 +64,6 @@ - - - diff --git a/src/Avalonia.Styling/Avalonia.Styling.csproj b/src/Avalonia.Styling/Avalonia.Styling.csproj index 6a32441ad6..5117aeb8c3 100644 --- a/src/Avalonia.Styling/Avalonia.Styling.csproj +++ b/src/Avalonia.Styling/Avalonia.Styling.csproj @@ -43,13 +43,17 @@ Properties\SharedAssemblyInfo.cs + + + + @@ -93,6 +97,10 @@ + + {d211e587-d8bc-45b9-95a4-f297c8fa5200} + Avalonia.Animation + {B09B78D8-9B26-48B0-9149-D64A2F120F3F} Avalonia.Base diff --git a/src/Avalonia.Controls/INameScope.cs b/src/Avalonia.Styling/Controls/INameScope.cs similarity index 100% rename from src/Avalonia.Controls/INameScope.cs rename to src/Avalonia.Styling/Controls/INameScope.cs diff --git a/src/Avalonia.Controls/NameScope.cs b/src/Avalonia.Styling/Controls/NameScope.cs similarity index 93% rename from src/Avalonia.Controls/NameScope.cs rename to src/Avalonia.Styling/Controls/NameScope.cs index aeba4158ef..ddfb3ea173 100644 --- a/src/Avalonia.Controls/NameScope.cs +++ b/src/Avalonia.Styling/Controls/NameScope.cs @@ -15,7 +15,7 @@ namespace Avalonia.Controls /// Defines the NameScope attached property. /// public static readonly AttachedProperty NameScopeProperty = - AvaloniaProperty.RegisterAttached("NameScope"); + AvaloniaProperty.RegisterAttached("NameScope"); private readonly Dictionary _inner = new Dictionary(); @@ -34,7 +34,7 @@ namespace Avalonia.Controls /// /// The visual. /// The value of the NameScope attached property. - public static INameScope GetNameScope(Control visual) + public static INameScope GetNameScope(Visual visual) { return visual.GetValue(NameScopeProperty); } @@ -44,7 +44,7 @@ namespace Avalonia.Controls /// /// The visual. /// The value to set. - public static void SetNameScope(Control visual, INameScope value) + public static void SetNameScope(Visual visual, INameScope value) { visual.SetValue(NameScopeProperty, value); } diff --git a/src/Avalonia.Controls/NameScopeEventArgs.cs b/src/Avalonia.Styling/Controls/NameScopeEventArgs.cs similarity index 100% rename from src/Avalonia.Controls/NameScopeEventArgs.cs rename to src/Avalonia.Styling/Controls/NameScopeEventArgs.cs diff --git a/src/Avalonia.Controls/NameScopeExtensions.cs b/src/Avalonia.Styling/Controls/NameScopeExtensions.cs similarity index 100% rename from src/Avalonia.Controls/NameScopeExtensions.cs rename to src/Avalonia.Styling/Controls/NameScopeExtensions.cs diff --git a/src/Avalonia.Styling/Styling/Setter.cs b/src/Avalonia.Styling/Styling/Setter.cs index 1d45f22b65..7f696a1f0a 100644 --- a/src/Avalonia.Styling/Styling/Setter.cs +++ b/src/Avalonia.Styling/Styling/Setter.cs @@ -4,6 +4,7 @@ using System; using System.Reactive.Disposables; using System.Reactive.Subjects; +using Avalonia.Controls; using Avalonia.Data; using Avalonia.Metadata; using Avalonia.Reactive; @@ -100,7 +101,9 @@ namespace Avalonia.Styling if (template != null) { - value = template.Build(); + var materialized = template.Build(); + NameScope.SetNameScope((Visual)materialized, new NameScope()); + value = materialized; } if (activator == null) diff --git a/tests/Avalonia.Styling.UnitTests/SetterTests.cs b/tests/Avalonia.Styling.UnitTests/SetterTests.cs index e6af3b2c0c..4de90b7790 100644 --- a/tests/Avalonia.Styling.UnitTests/SetterTests.cs +++ b/tests/Avalonia.Styling.UnitTests/SetterTests.cs @@ -48,5 +48,18 @@ namespace Avalonia.Styling.UnitTests Assert.IsType(control.Child); } + + [Fact] + public void Materializes_Template_Should_Be_NameScope() + { + var control = new Decorator(); + var template = new FuncTemplate(() => new Canvas()); + var style = Mock.Of(); + var setter = new Setter(Decorator.ChildProperty, template); + + setter.Apply(style, control, null); + + Assert.NotNull(NameScope.GetNameScope((Control)control.Child)); + } } }