Files
Avalonia/PortfolioManager/ViewModels/WorkspaceViewModel.cs
2025-06-18 20:03:31 -04:00

111 lines
2.1 KiB
C#

using System;
using System.Collections.ObjectModel;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.Input;
namespace PortfolioManager.ViewModels
{
public delegate void InstantiateWorkspace(SaveParameters saveParameters);
public abstract class WorkspaceViewModel : ViewModelBase
{
// Relay Command
private RelayCommand closeCommand;
// Events
public event EventHandler RequestClose;
private InstantiateWorkspace workspaceInstantiator;
private bool canClose = true;
private bool isClosed = false;
private String title = "WorkspaceViewModel";
public WorkspaceViewModel Referer { get; set; }
protected WorkspaceViewModel()
{
}
public InstantiateWorkspace WorkspaceInstantiator
{
get
{
return workspaceInstantiator;
}
set
{
workspaceInstantiator = value;
}
}
public IRelayCommand CloseCommand
{
get
{
if (null == closeCommand)
{
Action closeAction = delegate ()
{
this.OnRequestClose();
};
closeCommand = new RelayCommand(delegate () { this.OnRequestClose(); });
}
return closeCommand;
}
}
public bool IsClosed
{
get { return isClosed; }
set
{
if (isClosed != value)
{
isClosed = value;
base.OnPropertyChanged("IsClosed");
}
}
}
public bool CanClose
{
get { return canClose; }
set
{
if (canClose != value)
{
canClose = value;
base.OnPropertyChanged("CanClose");
}
}
}
public virtual String Title
{
get
{
return title;
}
set
{
title = value;
base.OnPropertyChanged("Title");
}
}
public virtual String Header
{
get
{
return title;
}
}
private void OnRequestClose()
{
EventHandler handler = this.RequestClose;
if (null != handler) handler(this, EventArgs.Empty);
}
}
}