InkForge/app/InkForge.Desktop/ViewModels/AppViewModel.cs

36 lines
820 B
C#

using InkForge.Desktop.Controllers;
using InkForge.Desktop.Models;
using ReactiveUI;
namespace InkForge.Desktop.ViewModels;
public class AppViewModel : ReactiveObject
{
private readonly LandingViewModel _landingViewModel;
private readonly WorkspaceController _workspace;
private object _view;
public object View
{
get => _view;
set => this.RaiseAndSetIfChanged(ref _view, value);
}
public AppViewModel(WorkspaceController workspace, LandingViewModel landingViewModel)
{
_workspace = workspace;
_landingViewModel = landingViewModel;
this.WhenAnyValue(v => v._workspace.Workspace).Subscribe(OnWorkspaceChanged);
}
private void OnWorkspaceChanged(Workspace workspace)
{
View = workspace switch
{
null => _landingViewModel,
{ } => new WorkspaceViewModel(workspace) // scoped?
};
}
}