diff --git a/samples/BindingTest/App.xaml.cs b/samples/BindingTest/App.xaml.cs
index 07fa406c1c..fd457f7ba9 100644
--- a/samples/BindingTest/App.xaml.cs
+++ b/samples/BindingTest/App.xaml.cs
@@ -9,11 +9,6 @@ namespace BindingTest
{
public class App : Application
{
- public App()
- {
- RegisterServices();
- }
-
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
diff --git a/samples/ControlCatalog/App.xaml.cs b/samples/ControlCatalog/App.xaml.cs
index fe2ccdb218..d862749132 100644
--- a/samples/ControlCatalog/App.xaml.cs
+++ b/samples/ControlCatalog/App.xaml.cs
@@ -5,11 +5,6 @@ namespace ControlCatalog
{
public class App : Application
{
- public App()
- {
- RegisterServices();
- }
-
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
diff --git a/samples/TestApplicationShared/App.cs b/samples/TestApplicationShared/App.cs
index b7e80bb41e..757ecc72bb 100644
--- a/samples/TestApplicationShared/App.cs
+++ b/samples/TestApplicationShared/App.cs
@@ -17,15 +17,6 @@ namespace TestApplication
{
public class App : Application
{
- public App()
- {
- // TODO: I believe this has to happen before we select sub systems. Can we
- // move this safely into Application itself? Is there anything in here
- // that is platform specific??
- //
- RegisterServices();
- }
-
public void Run()
{
Styles.Add(new DefaultTheme());
diff --git a/samples/XamlTestApplicationPcl/XamlTestApp.cs b/samples/XamlTestApplicationPcl/XamlTestApp.cs
index 7518346e91..dbdf8f2ad2 100644
--- a/samples/XamlTestApplicationPcl/XamlTestApp.cs
+++ b/samples/XamlTestApplicationPcl/XamlTestApp.cs
@@ -6,11 +6,6 @@ namespace XamlTestApplication
{
public class XamlTestApp : Application
{
- public XamlTestApp()
- {
- RegisterServices();
- }
-
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
diff --git a/src/Avalonia.Controls/AppBuilder.cs b/src/Avalonia.Controls/AppBuilder.cs
index 428b823dac..df50a105be 100644
--- a/src/Avalonia.Controls/AppBuilder.cs
+++ b/src/Avalonia.Controls/AppBuilder.cs
@@ -83,7 +83,7 @@ namespace Avalonia.Controls
{
throw new InvalidOperationException("No rendering system configured.");
}
-
+ Instance.RegisterServices();
WindowingSubsystem();
RenderingSubsystem();
Instance.Initialize();
diff --git a/src/Avalonia.Controls/Application.cs b/src/Avalonia.Controls/Application.cs
index aedf3370a3..f73ead5576 100644
--- a/src/Avalonia.Controls/Application.cs
+++ b/src/Avalonia.Controls/Application.cs
@@ -171,7 +171,7 @@ namespace Avalonia
///
/// Register's the services needed by Avalonia.
///
- protected virtual void RegisterServices()
+ public virtual void RegisterServices()
{
AvaloniaSynchronizationContext.InstallIfNeeded();
FocusManager = new FocusManager();
diff --git a/tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs b/tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs
index f9407a4708..653a51232b 100644
--- a/tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs
+++ b/tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs
@@ -9,12 +9,6 @@ namespace Avalonia.DesignerSupport.TestApp
{
public class App : Application
{
-
- public App()
- {
- RegisterServices();
- }
-
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
diff --git a/tests/Avalonia.UnitTests/UnitTestApplication.cs b/tests/Avalonia.UnitTests/UnitTestApplication.cs
index 01151b4952..83c8a2cebc 100644
--- a/tests/Avalonia.UnitTests/UnitTestApplication.cs
+++ b/tests/Avalonia.UnitTests/UnitTestApplication.cs
@@ -12,22 +12,17 @@ namespace Avalonia.UnitTests
{
public class UnitTestApplication : Application
{
+ private readonly TestServices _services;
+
public UnitTestApplication(TestServices services)
{
- Services = services ?? new TestServices();
+ _services = services ?? new TestServices();
RegisterServices();
-
- var styles = Services.Theme?.Invoke();
-
- if (styles != null)
- {
- Styles.AddRange(styles);
- }
}
public static new UnitTestApplication Current => (UnitTestApplication)Application.Current;
- public TestServices Services { get; }
+ public TestServices Services => _services;
public static IDisposable Start(TestServices services = null)
{
@@ -37,7 +32,7 @@ namespace Avalonia.UnitTests
return scope;
}
- protected override void RegisterServices()
+ public override void RegisterServices()
{
AvaloniaLocator.CurrentMutable
.Bind().ToConstant(Services.AssetLoader)
@@ -53,6 +48,12 @@ namespace Avalonia.UnitTests
.Bind().ToConstant(Services.Styler)
.Bind().ToConstant(Services.WindowingPlatform)
.Bind().ToConstant(this);
+ var styles = Services.Theme?.Invoke();
+
+ if (styles != null)
+ {
+ Styles.AddRange(styles);
+ }
}
}
}