Files
Speckle.Material.Avalonia/Material.Dialog/ViewModels/DialogWindowViewModel.cs
T
2022-07-05 10:21:35 +09:00

179 lines
4.0 KiB
C#

using System.Collections.ObjectModel;
using Avalonia.Controls;
using Avalonia.Layout;
using Avalonia.Threading;
using Material.Dialog.ViewModels.Elements;
using Material.Dialog.ViewModels.Elements.Header.Icons;
namespace Material.Dialog.ViewModels
{
public abstract class DialogWindowViewModel : DialogViewModelBase
{
public DialogWindowViewModel(Window window)
{
Window = window;
}
private Window _window;
protected Window Window
{
get => _window;
private set => _window = value;
}
#region Base Properties
private string _windowTitle;
public string WindowTitle
{
get => _windowTitle;
set
{
_windowTitle = value;
OnPropertyChanged();
}
}
private string _contentHeader;
public string ContentHeader
{
get => _contentHeader;
set
{
_contentHeader = value;
OnPropertyChanged();
}
}
private string _contentMessage;
public string ContentMessage
{
get => _contentMessage;
set
{
_contentMessage = value;
OnPropertyChanged();
}
}
private bool _borderless;
public bool Borderless
{
get => _borderless;
set
{
_borderless = value;
OnPropertyChanged();
}
}
private double? _maxWidth;
public double? MaxWidth
{
get => _maxWidth;
set
{
_maxWidth = value;
OnPropertyChanged();
}
}
private double? _width;
public double? Width
{
get => _width;
set
{
_width = value;
OnPropertyChanged();
}
}
private WindowStartupLocation _windowStartupLocation;
public WindowStartupLocation WindowStartupLocation
{
get => _windowStartupLocation;
set
{
_windowStartupLocation = value;
OnPropertyChanged();
}
}
private IconViewModelBase? _dialogIcon;
public IconViewModelBase? DialogIcon
{
get => _dialogIcon;
set
{
_dialogIcon = value;
OnPropertyChanged();
}
}
#endregion
private ObservableCollection<DialogButtonViewModel> _neutralDialogButton;
public ObservableCollection<DialogButtonViewModel> NeutralDialogButton
{
get => _neutralDialogButton;
internal set
{
_neutralDialogButton = value;
OnPropertyChanged();
}
}
private ObservableCollection<DialogButtonViewModel> _dialogButtons;
public ObservableCollection<DialogButtonViewModel> DialogButtons
{
get => _dialogButtons;
internal set
{
_dialogButtons = value;
OnPropertyChanged();
}
}
private Orientation _buttonsStackOrientation;
public Orientation ButtonsStackOrientation
{
get => _buttonsStackOrientation;
internal set
{
_buttonsStackOrientation = value;
OnPropertyChanged();
}
}
private DialogResult _dialogResult;
public DialogResult DialogResult
{
get => _dialogResult;
internal set
{
_dialogResult = value;
OnPropertyChanged();
}
}
public async void CloseWindow()
{
await Dispatcher.UIThread.InvokeAsync(() => { _window.Close(); });
}
}
}