ReactiveUI
ReactiveUI copied to clipboard
[Bug]: View&ViewModel's WhenActivated run error order in MAUI implement
Describe the bug 🐞
A bug happened! View&ViewModel's WhenActivated in MAUI triggered with error order
Step to reproduce
Create New MAUI Applicaton
public class DemoViewModel : ReactiveObject, IActivatableViewModel
{
public ViewModelActivator Activator { get; }
public DemoViewModel()
{
this.Activator = new ViewModelActivator();
this.Log().Info($"ViewModel Created");
this.WhenActivated((CompositeDisposable dis) =>
{
this.Log().Info($"ViewModel Actived");
});
}
}
public partial class DemoView : IEnableLogger
{
public DemoView()
{
InitializeComponent();
this.Log().Info($"View Created");
this.WhenActivated(dis =>
{
this.Log().Info($"View Actived");
});
}
}
<maui:ReactiveContentView x:TypeArguments="whenActivatedDemo:DemoViewModel" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:maui="clr-namespace:ReactiveUI.Maui;assembly=ReactiveUI.Maui"
xmlns:whenActivatedDemo="clr-namespace:WhenActivatedDemo"
x:Class="WhenActivatedDemo.DemoView">
<VerticalStackLayout>
<Label FontSize="40"
Text="Welcome to .NET MAUI!"
VerticalOptions="Center"
HorizontalOptions="Center" />
</VerticalStackLayout>
</maui:ReactiveContentView>
public MainPage()
{
InitializeComponent();
this.Log().Info($"Init");
var viewModel = new DemoViewModel();
var view = new DemoView
{
ViewModel = viewModel,
};
this.Log().Info($"Show");
this.Content = view;
}
when executed ,the logger print
[0:] MainPage: Init
[0:] DemoViewModel: ViewModel Created
[0:] DemoView: View Created
[0:] DemoView: View Actived
[0:] DemoViewModel: ViewModel Actived
[0:] MainPage: Show
Reproduction repository
Expected behavior
the order is error , right should be :
[0:] MainPage: Init
[0:] DemoViewModel: ViewModel Created
[0:] DemoView: View Created
[0:] MainPage: Show
[0:] DemoView: View Actived
[0:] DemoViewModel: ViewModel Actived
IDE
Visual Studio 2022
ReactiveUI Version
18.3.1