Replace ReactiveUI
This commit is contained in:
parent
43b4d50e43
commit
5584ab4ec8
41 changed files with 472 additions and 1013 deletions
|
|
@ -1,32 +1,40 @@
|
|||
using Dock.Model.ReactiveUI.Controls;
|
||||
using System.Reactive.Linq;
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
using Dock.Model.Mvvm.Controls;
|
||||
|
||||
using DynamicData.Binding;
|
||||
|
||||
using InkForge.Desktop.Managers;
|
||||
using InkForge.Desktop.Models;
|
||||
using InkForge.Desktop.ViewModels.Workspaces;
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels.Tools;
|
||||
|
||||
public class WorkspaceTool : Tool
|
||||
public partial class WorkspaceTool : Tool
|
||||
{
|
||||
private WorkspaceViewModel? _workspace;
|
||||
|
||||
public WorkspaceViewModel? Workspace
|
||||
{
|
||||
get => _workspace;
|
||||
private set => this.RaiseAndSetIfChanged(ref _workspace, value);
|
||||
}
|
||||
private readonly IWorkspaceViewModelFactory _workspaceViewModelFactory;
|
||||
[ObservableProperty] private WorkspaceViewModel? _workspace;
|
||||
|
||||
public WorkspaceTool(WorkspaceManager workspaceManager, IWorkspaceViewModelFactory workspaceViewModelFactory)
|
||||
{
|
||||
Title = "Workspace";
|
||||
_workspaceViewModelFactory = workspaceViewModelFactory;
|
||||
|
||||
Title = "Explorer";
|
||||
CanClose = false;
|
||||
CanFloat = false;
|
||||
CanPin = false;
|
||||
|
||||
workspaceManager.WhenAnyValue(v => v.Workspace,
|
||||
v => v switch
|
||||
{
|
||||
{ } => workspaceViewModelFactory.Create(v),
|
||||
_ => null
|
||||
}).BindTo(this, v => v.Workspace);
|
||||
workspaceManager.WhenValueChanged(v => v.Workspace).Subscribe(OnWorkspaceManagerWorkspaceChanged);
|
||||
}
|
||||
|
||||
private void OnWorkspaceManagerWorkspaceChanged(Workspace? workspace)
|
||||
{
|
||||
Workspace = workspace switch
|
||||
{
|
||||
{ } v => _workspaceViewModelFactory.Create(v),
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue