diff --git a/Avalonia.Desktop.slnf b/Avalonia.Desktop.slnf
index 0cddbdf9fd..29fc4ab8d5 100644
--- a/Avalonia.Desktop.slnf
+++ b/Avalonia.Desktop.slnf
@@ -9,7 +9,6 @@
"samples\\GpuInterop\\GpuInterop.csproj",
"samples\\IntegrationTestApp\\IntegrationTestApp.csproj",
"samples\\MiniMvvm\\MiniMvvm.csproj",
- "samples\\ReactiveUIDemo\\ReactiveUIDemo.csproj",
"samples\\RenderDemo\\RenderDemo.csproj",
"samples\\SampleControls\\ControlSamples.csproj",
"samples\\Sandbox\\Sandbox.csproj",
@@ -31,7 +30,6 @@
"src\\Avalonia.Native\\Avalonia.Native.csproj",
"src\\Avalonia.OpenGL\\Avalonia.OpenGL.csproj",
"src\\Avalonia.Vulkan\\Avalonia.Vulkan.csproj",
- "src\\Avalonia.ReactiveUI\\Avalonia.ReactiveUI.csproj",
"src\\Avalonia.Remote.Protocol\\Avalonia.Remote.Protocol.csproj",
"src\\Avalonia.Themes.Fluent\\Avalonia.Themes.Fluent.csproj",
"src\\Avalonia.Themes.Simple\\Avalonia.Themes.Simple.csproj",
@@ -64,7 +62,6 @@
"tests\\Avalonia.LeakTests\\Avalonia.LeakTests.csproj",
"tests\\Avalonia.Markup.UnitTests\\Avalonia.Markup.UnitTests.csproj",
"tests\\Avalonia.Markup.Xaml.UnitTests\\Avalonia.Markup.Xaml.UnitTests.csproj",
- "tests\\Avalonia.ReactiveUI.UnitTests\\Avalonia.ReactiveUI.UnitTests.csproj",
"tests\\Avalonia.RenderTests.WpfCompare\\Avalonia.RenderTests.WpfCompare.csproj",
"tests\\Avalonia.Skia.RenderTests\\Avalonia.Skia.RenderTests.csproj",
"tests\\Avalonia.Skia.UnitTests\\Avalonia.Skia.UnitTests.csproj",
diff --git a/Avalonia.sln b/Avalonia.sln
index 5ceec86f70..6ce8e9a986 100644
--- a/Avalonia.sln
+++ b/Avalonia.sln
@@ -45,8 +45,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A689DE
src\Shared\StreamCompatibilityExtensions.cs = src\Shared\StreamCompatibilityExtensions.cs
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.ReactiveUI", "src\Avalonia.ReactiveUI\Avalonia.ReactiveUI.csproj", "{6417B24E-49C2-4985-8DB2-3AB9D898EC91}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Markup", "src\Markup\Avalonia.Markup\Avalonia.Markup.csproj", "{6417E941-21BC-467B-A771-0DE389353CE6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Markup.UnitTests", "tests\Avalonia.Markup.UnitTests\Avalonia.Markup.UnitTests.csproj", "{8EF392D5-1416-45AA-9956-7CBBC3229E8A}"
@@ -107,7 +105,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1
build\NetCore.props = build\NetCore.props
build\NetFX.props = build\NetFX.props
build\NullableEnable.props = build\NullableEnable.props
- build\ReactiveUI.props = build\ReactiveUI.props
build\ReferenceCoreLibraries.props = build\ReferenceCoreLibraries.props
build\Rx.props = build\Rx.props
build\SampleApp.props = build\SampleApp.props
@@ -169,8 +166,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.X11", "src\Avaloni
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlatformSanityChecks", "samples\PlatformSanityChecks\PlatformSanityChecks.csproj", "{D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.ReactiveUI.UnitTests", "tests\Avalonia.ReactiveUI.UnitTests\Avalonia.ReactiveUI.UnitTests.csproj", "{AF915D5C-AB00-4EA0-B5E6-001F4AE84E68}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Dialogs", "src\Avalonia.Dialogs\Avalonia.Dialogs.csproj", "{4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.FreeDesktop", "src\Avalonia.FreeDesktop\Avalonia.FreeDesktop.csproj", "{4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}"
@@ -219,8 +214,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ControlCatalog.Browser", "s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ControlCatalog.Browser.Blazor", "samples\ControlCatalog.Browser.Blazor\ControlCatalog.Browser.Blazor.csproj", "{90B08091-9BBD-4362-B712-E9F2CC62B218}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUIDemo", "samples\ReactiveUIDemo\ReactiveUIDemo.csproj", "{75C47156-C5D8-44BC-A5A7-E8657C2248D6}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GpuInterop", "samples\GpuInterop\GpuInterop.csproj", "{C810060E-3809-4B74-A125-F11533AF9C1B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Analyzers", "src\tools\Avalonia.Analyzers\Avalonia.Analyzers.csproj", "{C692FE73-43DB-49CE-87FC-F03ED61F25C9}"
@@ -359,10 +352,6 @@ Global
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.Build.0 = Release|Any CPU
- {6417B24E-49C2-4985-8DB2-3AB9D898EC91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6417B24E-49C2-4985-8DB2-3AB9D898EC91}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6417B24E-49C2-4985-8DB2-3AB9D898EC91}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6417B24E-49C2-4985-8DB2-3AB9D898EC91}.Release|Any CPU.Build.0 = Release|Any CPU
{6417E941-21BC-467B-A771-0DE389353CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6417E941-21BC-467B-A771-0DE389353CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6417E941-21BC-467B-A771-0DE389353CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -495,10 +484,6 @@ Global
{D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|Any CPU.Build.0 = Release|Any CPU
- {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68}.Release|Any CPU.Build.0 = Release|Any CPU
{4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -591,10 +576,6 @@ Global
{90B08091-9BBD-4362-B712-E9F2CC62B218}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90B08091-9BBD-4362-B712-E9F2CC62B218}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90B08091-9BBD-4362-B712-E9F2CC62B218}.Release|Any CPU.Build.0 = Release|Any CPU
- {75C47156-C5D8-44BC-A5A7-E8657C2248D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {75C47156-C5D8-44BC-A5A7-E8657C2248D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {75C47156-C5D8-44BC-A5A7-E8657C2248D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {75C47156-C5D8-44BC-A5A7-E8657C2248D6}.Release|Any CPU.Build.0 = Release|Any CPU
{C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{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
@@ -754,7 +735,6 @@ Global
{3C471044-3640-45E3-B1B2-16D2FF8399EE} = {E870DCD7-F46A-498D-83FC-D0FD13E0A11C}
{41B02319-965D-4945-8005-C1A3D1224165} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
{D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B} = {9B9E3891-2366-4253-A952-D08BCEB71098}
- {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{4D36CEC8-53F2-40A5-9A37-79AAE356E2DA} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
{8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC} = {FF237916-7150-496B-89ED-6CA3292896E7}
{B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E} = {FF237916-7150-496B-89ED-6CA3292896E7}
@@ -774,7 +754,6 @@ Global
{47F8530C-F19B-4B1A-B4D6-EB231522AE5D} = {86A3F706-DC3C-43C6-BE1B-B98F5BAAA268}
{15B93A4C-1B46-43F6-B534-7B25B6E99932} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{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}
{C692FE73-43DB-49CE-87FC-F03ED61F25C9} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637}
{DDA28789-C21A-4654-86CE-D01E81F095C5} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637}
diff --git a/build/ReactiveUI.props b/build/ReactiveUI.props
deleted file mode 100644
index 299a91953c..0000000000
--- a/build/ReactiveUI.props
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs
index 8db04b0edd..9b3e0fc6ab 100644
--- a/nukebuild/Build.cs
+++ b/nukebuild/Build.cs
@@ -252,7 +252,6 @@ partial class Build : NukeBuild
RunCoreTest("Avalonia.Markup.UnitTests");
RunCoreTest("Avalonia.Markup.Xaml.UnitTests");
RunCoreTest("Avalonia.Skia.UnitTests");
- RunCoreTest("Avalonia.ReactiveUI.UnitTests");
RunCoreTest("Avalonia.Headless.NUnit.PerAssembly.UnitTests");
RunCoreTest("Avalonia.Headless.NUnit.PerTest.UnitTests");
RunCoreTest("Avalonia.Headless.XUnit.PerAssembly.UnitTests");
diff --git a/samples/Generators.Sandbox/App.xaml.cs b/samples/Generators.Sandbox/App.xaml.cs
index 6118b3f177..73024efc00 100644
--- a/samples/Generators.Sandbox/App.xaml.cs
+++ b/samples/Generators.Sandbox/App.xaml.cs
@@ -12,9 +12,9 @@ public class App : Application
{
var view = new Views.SignUpView
{
- ViewModel = new SignUpViewModel()
+ DataContext = new SignUpViewModel()
};
view.Show();
base.OnFrameworkInitializationCompleted();
}
-}
\ No newline at end of file
+}
diff --git a/samples/Generators.Sandbox/Controls/SignUpView.xaml b/samples/Generators.Sandbox/Controls/SignUpView.xaml
index c126f36f53..bcc59f7279 100644
--- a/samples/Generators.Sandbox/Controls/SignUpView.xaml
+++ b/samples/Generators.Sandbox/Controls/SignUpView.xaml
@@ -1,45 +1,58 @@
-
+ xmlns:vm="clr-namespace:Generators.Sandbox.ViewModels"
+ x:Class="Generators.Sandbox.Controls.SignUpView"
+ x:DataType="vm:SignUpViewModel">
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+ FontSize="12"
+ Text="{Binding CompoundValidation}" />
diff --git a/samples/Generators.Sandbox/Controls/SignUpView.xaml.cs b/samples/Generators.Sandbox/Controls/SignUpView.xaml.cs
index c4cd1cdc1a..5268a5f54c 100644
--- a/samples/Generators.Sandbox/Controls/SignUpView.xaml.cs
+++ b/samples/Generators.Sandbox/Controls/SignUpView.xaml.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Reactive.Disposables;
-using Avalonia.ReactiveUI;
-using Generators.Sandbox.ViewModels;
-using ReactiveUI;
-using ReactiveUI.Validation.Extensions;
-using ReactiveUI.Validation.Formatters;
+using Avalonia.Controls;
namespace Generators.Sandbox.Controls;
@@ -14,41 +8,12 @@ namespace Generators.Sandbox.Controls;
/// references are living in a separate partial class file. See also:
/// https://devblogs.microsoft.com/dotnet/new-c-source-generator-samples/
///
-public partial class SignUpView : ReactiveUserControl
+public partial class SignUpView : UserControl
{
public SignUpView()
{
// The InitializeComponent method is also generated automatically
// and lives in the autogenerated part of the partial class.
InitializeComponent();
- this.WhenActivated(disposables =>
- {
- this.Bind(ViewModel, x => x.UserName, x => x.UserNameTextBox.Text)
- .DisposeWith(disposables);
- this.Bind(ViewModel, x => x.Password, x => x.PasswordTextBox.Text)
- .DisposeWith(disposables);
- this.Bind(ViewModel, x => x.ConfirmPassword, x => x.ConfirmPasswordTextBox.Text)
- .DisposeWith(disposables);
- this.BindCommand(ViewModel, x => x.SignUp, x => x.SignUpButton)
- .DisposeWith(disposables);
-
- this.BindValidation(ViewModel, x => x.UserName, x => x.UserNameValidation.Text)
- .DisposeWith(disposables);
- this.BindValidation(ViewModel, x => x.Password, x => x.PasswordValidation.Text)
- .DisposeWith(disposables);
- this.BindValidation(ViewModel, x => x.ConfirmPassword, x => x.ConfirmPasswordValidation.Text)
- .DisposeWith(disposables);
-
- var newLineFormatter = new SingleLineFormatter(Environment.NewLine);
- this.BindValidation(ViewModel, x => x.CompoundValidation.Text, newLineFormatter)
- .DisposeWith(disposables);
-
- // The references to text boxes below are also auto generated.
- // Use Ctrl+Click in order to view the generated sources.
- UserNameTextBox.Text = "Joseph!";
- PasswordTextBox.Text = "1234";
- ConfirmPasswordTextBox.Text = "1234";
- SignUpButtonDescription.Text = "Press the button below to sign up.";
- });
}
}
diff --git a/samples/Generators.Sandbox/Generators.Sandbox.csproj b/samples/Generators.Sandbox/Generators.Sandbox.csproj
index 6cbf210d3f..5a21bab3e0 100644
--- a/samples/Generators.Sandbox/Generators.Sandbox.csproj
+++ b/samples/Generators.Sandbox/Generators.Sandbox.csproj
@@ -1,4 +1,5 @@
+
Exe
$(AvsCurrentTargetFramework)
@@ -6,23 +7,24 @@
-
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/samples/Generators.Sandbox/Program.cs b/samples/Generators.Sandbox/Program.cs
index 7e533965df..f26e1b79b5 100644
--- a/samples/Generators.Sandbox/Program.cs
+++ b/samples/Generators.Sandbox/Program.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.ReactiveUI;
namespace Generators.Sandbox;
@@ -9,7 +8,6 @@ internal static class Program
private static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure()
- .UseReactiveUI()
.UsePlatformDetect()
.LogToTrace();
}
diff --git a/samples/Generators.Sandbox/ViewModels/SignUpViewModel.cs b/samples/Generators.Sandbox/ViewModels/SignUpViewModel.cs
index 06b6122088..f99d434e42 100644
--- a/samples/Generators.Sandbox/ViewModels/SignUpViewModel.cs
+++ b/samples/Generators.Sandbox/ViewModels/SignUpViewModel.cs
@@ -1,70 +1,81 @@
-using System.Reactive;
-using ReactiveUI;
-using ReactiveUI.Validation.Extensions;
-using ReactiveUI.Validation.Helpers;
+using System;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using CommunityToolkit.Mvvm.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
namespace Generators.Sandbox.ViewModels;
-public class SignUpViewModel : ReactiveValidationObject
+public class SignUpViewModel : ObservableValidator
{
- private string _userName = string.Empty;
- private string _password = string.Empty;
- private string _confirmPassword = string.Empty;
+ private string? _userName;
+ private string? _password;
+ private string? _confirmPassword;
public SignUpViewModel()
{
- this.ValidationRule(
- vm => vm.UserName,
- name => !string.IsNullOrWhiteSpace(name),
- "UserName is required.");
+ UserName = "Joseph!";
+ Password = "1234";
+ ConfirmPassword = "1234";
+ SignUp = new RelayCommand(() => { }, () => !HasErrors);
- this.ValidationRule(
- vm => vm.Password,
- password => !string.IsNullOrWhiteSpace(password),
- "Password is required.");
-
- this.ValidationRule(
- vm => vm.Password,
- password => password?.Length > 2,
- password => $"Password should be longer, current length: {password.Length}");
+ ErrorsChanged += OnErrorsChanged;
+ }
- this.ValidationRule(
- vm => vm.ConfirmPassword,
- confirmation => !string.IsNullOrWhiteSpace(confirmation),
- "Confirm password field is required.");
+ public RelayCommand SignUp { get; }
- var passwordsObservable =
- this.WhenAnyValue(
- x => x.Password,
- x => x.ConfirmPassword,
- (password, confirmation) =>
- password == confirmation);
+ [Required]
+ public string? UserName
+ {
+ get => _userName;
+ set => SetProperty(ref _userName, value, validate: true);
+ }
- this.ValidationRule(
- vm => vm.ConfirmPassword,
- passwordsObservable,
- "Passwords must match.");
+ public string? UserNameValidation
+ => GetValidationMessage(nameof(UserName));
- SignUp = ReactiveCommand.Create(() => {}, this.IsValid());
+ [Required]
+ [MinLength(2)]
+ public string? Password
+ {
+ get => _password;
+ set
+ {
+ if (SetProperty(ref _password, value, validate: true))
+ ValidateProperty(ConfirmPassword, nameof(ConfirmPassword));
+ }
}
- public ReactiveCommand SignUp { get; }
+ public string? PasswordValidation
+ => GetValidationMessage(nameof(Password));
- public string UserName
+ [Required]
+ [Compare(nameof(Password))]
+ public string? ConfirmPassword
{
- get => _userName;
- set => this.RaiseAndSetIfChanged(ref _userName, value);
+ get => _confirmPassword;
+ set => SetProperty(ref _confirmPassword, value, validate: true);
}
- public string Password
+ public string? ConfirmPasswordValidation
+ => GetValidationMessage(nameof(ConfirmPassword));
+
+ public string? CompoundValidation
+ => GetValidationMessage(null);
+
+ private void OnErrorsChanged(object? sender, DataErrorsChangedEventArgs e)
{
- get => _password;
- set => this.RaiseAndSetIfChanged(ref _password, value);
+ if (e.PropertyName is not null)
+ OnPropertyChanged(e.PropertyName + "Validation");
+
+ OnPropertyChanged(CompoundValidation);
+ SignUp.NotifyCanExecuteChanged();
}
- public string ConfirmPassword
+ private string? GetValidationMessage(string? propertyName)
{
- get => _confirmPassword;
- set => this.RaiseAndSetIfChanged(ref _confirmPassword, value);
+ var message = string.Join(Environment.NewLine, GetErrors(propertyName).Select(v => v.ErrorMessage));
+ return string.IsNullOrEmpty(message) ? null : message;
}
-}
\ No newline at end of file
+}
diff --git a/samples/Generators.Sandbox/Views/SignUpView.xaml.cs b/samples/Generators.Sandbox/Views/SignUpView.xaml.cs
index 1f495b7dc6..67567c4f4c 100644
--- a/samples/Generators.Sandbox/Views/SignUpView.xaml.cs
+++ b/samples/Generators.Sandbox/Views/SignUpView.xaml.cs
@@ -1,7 +1,4 @@
-using System.Reactive.Disposables;
-using Avalonia.ReactiveUI;
-using Generators.Sandbox.ViewModels;
-using ReactiveUI;
+using Avalonia.Controls;
namespace Generators.Sandbox.Views;
@@ -11,18 +8,12 @@ namespace Generators.Sandbox.Views;
/// references are living in a separate partial class file. See also:
/// https://devblogs.microsoft.com/dotnet/new-c-source-generator-samples/
///
-public partial class SignUpView : ReactiveWindow
+public partial class SignUpView : Window
{
public SignUpView()
{
// The InitializeComponent method is also generated automatically
// and lives in the autogenerated part of the partial class.
InitializeComponent();
- this.WhenActivated(disposables =>
- {
- this.WhenAnyValue(view => view.ViewModel)
- .BindTo(this, view => view.SignUpControl.ViewModel)
- .DisposeWith(disposables);
- });
}
-}
\ No newline at end of file
+}
diff --git a/samples/ReactiveUIDemo/App.axaml b/samples/ReactiveUIDemo/App.axaml
deleted file mode 100644
index dd3a39f6ac..0000000000
--- a/samples/ReactiveUIDemo/App.axaml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
diff --git a/samples/ReactiveUIDemo/App.axaml.cs b/samples/ReactiveUIDemo/App.axaml.cs
deleted file mode 100644
index 4578566427..0000000000
--- a/samples/ReactiveUIDemo/App.axaml.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using Avalonia;
-using Avalonia.Controls.ApplicationLifetimes;
-using Avalonia.Markup.Xaml;
-using Avalonia.ReactiveUI;
-using ReactiveUI;
-using ReactiveUIDemo.ViewModels;
-using ReactiveUIDemo.Views;
-using Splat;
-
-namespace ReactiveUIDemo
-{
- public class App : Application
- {
- public override void Initialize()
- {
- AvaloniaXamlLoader.Load(this);
- Locator.CurrentMutable.Register(() => new FooView(), typeof(IViewFor));
- Locator.CurrentMutable.Register(() => new BarView(), typeof(IViewFor));
- }
-
- public override void OnFrameworkInitializationCompleted()
- {
- if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
- desktop.MainWindow = new MainWindow();
- base.OnFrameworkInitializationCompleted();
- }
-
- public static int Main(string[] args)
- => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
-
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
- .UsePlatformDetect()
- .UseReactiveUI()
- .LogToTrace();
- }
-}
diff --git a/samples/ReactiveUIDemo/MainWindow.axaml b/samples/ReactiveUIDemo/MainWindow.axaml
deleted file mode 100644
index 7775fc5a79..0000000000
--- a/samples/ReactiveUIDemo/MainWindow.axaml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/ReactiveUIDemo/MainWindow.axaml.cs b/samples/ReactiveUIDemo/MainWindow.axaml.cs
deleted file mode 100644
index 5bf2d476fd..0000000000
--- a/samples/ReactiveUIDemo/MainWindow.axaml.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using ReactiveUIDemo.ViewModels;
-using Avalonia;
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-
-namespace ReactiveUIDemo
-{
- public class MainWindow : Window
- {
- public MainWindow()
- {
- this.InitializeComponent();
- this.DataContext = new MainWindowViewModel();
- this.AttachDevTools();
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
-}
diff --git a/samples/ReactiveUIDemo/ReactiveUIDemo.csproj b/samples/ReactiveUIDemo/ReactiveUIDemo.csproj
deleted file mode 100644
index 00f470fd79..0000000000
--- a/samples/ReactiveUIDemo/ReactiveUIDemo.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- Exe
- $(AvsCurrentTargetFramework)
- enable
-
-
-
-
-
-
-
-
-
-
-
- BarView.axaml
-
-
- FooView.axaml
-
-
-
-
-
-
-
-
diff --git a/samples/ReactiveUIDemo/ViewModels/BarViewModel.cs b/samples/ReactiveUIDemo/ViewModels/BarViewModel.cs
deleted file mode 100644
index 3448453d81..0000000000
--- a/samples/ReactiveUIDemo/ViewModels/BarViewModel.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using ReactiveUI;
-
-namespace ReactiveUIDemo.ViewModels
-{
- internal class BarViewModel : ReactiveObject, IRoutableViewModel
- {
- public BarViewModel(IScreen screen) => HostScreen = screen;
- public string UrlPathSegment => "Bar";
- public IScreen HostScreen { get; }
- }
-}
diff --git a/samples/ReactiveUIDemo/ViewModels/FooViewModel.cs b/samples/ReactiveUIDemo/ViewModels/FooViewModel.cs
deleted file mode 100644
index 1a363e18dc..0000000000
--- a/samples/ReactiveUIDemo/ViewModels/FooViewModel.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using ReactiveUI;
-
-namespace ReactiveUIDemo.ViewModels
-{
- internal class FooViewModel : ReactiveObject, IRoutableViewModel
- {
- public FooViewModel(IScreen screen) => HostScreen = screen;
- public string UrlPathSegment => "Foo";
- public IScreen HostScreen { get; }
- }
-}
diff --git a/samples/ReactiveUIDemo/ViewModels/MainWindowViewModel.cs b/samples/ReactiveUIDemo/ViewModels/MainWindowViewModel.cs
deleted file mode 100644
index 2222137d38..0000000000
--- a/samples/ReactiveUIDemo/ViewModels/MainWindowViewModel.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using ReactiveUI;
-
-namespace ReactiveUIDemo.ViewModels
-{
- internal class MainWindowViewModel : ReactiveObject
- {
- public RoutedViewHostPageViewModel RoutedViewHost { get; } = new();
- }
-}
diff --git a/samples/ReactiveUIDemo/ViewModels/RoutedViewHostPageViewModel.cs b/samples/ReactiveUIDemo/ViewModels/RoutedViewHostPageViewModel.cs
deleted file mode 100644
index 701447cfe8..0000000000
--- a/samples/ReactiveUIDemo/ViewModels/RoutedViewHostPageViewModel.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using ReactiveUI;
-
-namespace ReactiveUIDemo.ViewModels
-{
- internal class RoutedViewHostPageViewModel : ReactiveObject, IScreen
- {
- public RoutedViewHostPageViewModel()
- {
- Foo = new(this);
- Bar = new(this);
- Router.Navigate.Execute(Foo);
- }
-
- public RoutingState Router { get; } = new();
- public FooViewModel Foo { get; }
- public BarViewModel Bar { get; }
-
- public void ShowFoo() => Router.Navigate.Execute(Foo);
- public void ShowBar() => Router.Navigate.Execute(Bar);
- }
-}
diff --git a/samples/ReactiveUIDemo/Views/BarView.axaml b/samples/ReactiveUIDemo/Views/BarView.axaml
deleted file mode 100644
index 2622245997..0000000000
--- a/samples/ReactiveUIDemo/Views/BarView.axaml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Bar!
-
-
-
diff --git a/samples/ReactiveUIDemo/Views/BarView.axaml.cs b/samples/ReactiveUIDemo/Views/BarView.axaml.cs
deleted file mode 100644
index 2fbea6de91..0000000000
--- a/samples/ReactiveUIDemo/Views/BarView.axaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-using ReactiveUI;
-using ReactiveUIDemo.ViewModels;
-
-namespace ReactiveUIDemo.Views
-{
- internal partial class BarView : UserControl, IViewFor
- {
- public BarView()
- {
- InitializeComponent();
- }
-
- public BarViewModel? ViewModel { get; set; }
-
- object? IViewFor.ViewModel
- {
- get => ViewModel;
- set => ViewModel = (BarViewModel?)value;
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
-}
diff --git a/samples/ReactiveUIDemo/Views/FooView.axaml b/samples/ReactiveUIDemo/Views/FooView.axaml
deleted file mode 100644
index 8f73250d3b..0000000000
--- a/samples/ReactiveUIDemo/Views/FooView.axaml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Foo!
-
-
-
diff --git a/samples/ReactiveUIDemo/Views/FooView.axaml.cs b/samples/ReactiveUIDemo/Views/FooView.axaml.cs
deleted file mode 100644
index 313a71044c..0000000000
--- a/samples/ReactiveUIDemo/Views/FooView.axaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-using ReactiveUI;
-using ReactiveUIDemo.ViewModels;
-
-namespace ReactiveUIDemo.Views
-{
- internal partial class FooView : UserControl, IViewFor
- {
- public FooView()
- {
- InitializeComponent();
- }
-
- public FooViewModel? ViewModel { get; set; }
-
- object? IViewFor.ViewModel
- {
- get => ViewModel;
- set => ViewModel = (FooViewModel?)value;
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
-}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj
index 4dd79dee1b..5d43f20cc4 100644
--- a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj
@@ -35,7 +35,6 @@
-
diff --git a/src/Avalonia.ReactiveUI/AppBuilderExtensions.cs b/src/Avalonia.ReactiveUI/AppBuilderExtensions.cs
deleted file mode 100644
index 3fde580160..0000000000
--- a/src/Avalonia.ReactiveUI/AppBuilderExtensions.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Threading;
-using ReactiveUI;
-using Splat;
-
-namespace Avalonia.ReactiveUI
-{
- public static class AppBuilderExtensions
- {
- ///
- /// Initializes ReactiveUI framework to use with Avalonia. Registers Avalonia
- /// scheduler, an activation for view fetcher, a template binding hook. Remember
- /// to call this method if you are using ReactiveUI in your application.
- ///
- public static AppBuilder UseReactiveUI(this AppBuilder builder) =>
- builder.AfterPlatformServicesSetup(_ => Locator.RegisterResolverCallbackChanged(() =>
- {
- if (Locator.CurrentMutable is null)
- {
- return;
- }
-
- PlatformRegistrationManager.SetRegistrationNamespaces(RegistrationNamespace.Avalonia);
- RxApp.MainThreadScheduler = AvaloniaScheduler.Instance;
- Locator.CurrentMutable.RegisterConstant(new AvaloniaActivationForViewFetcher(), typeof(IActivationForViewFetcher));
- Locator.CurrentMutable.RegisterConstant(new AutoDataTemplateBindingHook(), typeof(IPropertyBindingHook));
- }));
- }
-}
diff --git a/src/Avalonia.ReactiveUI/Attributes.cs b/src/Avalonia.ReactiveUI/Attributes.cs
deleted file mode 100644
index 1b85cd2f47..0000000000
--- a/src/Avalonia.ReactiveUI/Attributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-using System.Reflection;
-using Avalonia.Metadata;
-
-[assembly: XmlnsDefinition("http://reactiveui.net", "Avalonia.ReactiveUI")]
\ No newline at end of file
diff --git a/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs b/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs
deleted file mode 100644
index b6cdb77f81..0000000000
--- a/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Linq;
-using Avalonia.Controls;
-using Avalonia.Controls.Templates;
-using Avalonia.Layout;
-using Avalonia.Markup.Xaml;
-using Avalonia.Markup.Xaml.Templates;
-using ReactiveUI;
-
-namespace Avalonia.ReactiveUI
-{
- ///
- /// AutoDataTemplateBindingHook is a binding hook that checks ItemsControls
- /// that don't have DataTemplates, and assigns a default DataTemplate that
- /// loads the View associated with each ViewModel.
- ///
- public class AutoDataTemplateBindingHook : IPropertyBindingHook
- {
- private static FuncDataTemplate DefaultItemTemplate = new FuncDataTemplate