61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
|
|
using System;
|
||
|
|
using System.Windows;
|
||
|
|
using System.Windows.Input;
|
||
|
|
using MaxwellFramework.Core.Common.Command;
|
||
|
|
using Stylet;
|
||
|
|
|
||
|
|
namespace MainShell.Common.ViewModel
|
||
|
|
{
|
||
|
|
public class MwMessageBoxWindowViewModel : PropertyChangedBase
|
||
|
|
{
|
||
|
|
private bool? _dialogResult;
|
||
|
|
private MessageBoxResult _result;
|
||
|
|
|
||
|
|
public MwMessageBoxWindowViewModel(MwMessageBoxState state)
|
||
|
|
{
|
||
|
|
State = state ?? throw new ArgumentNullException(nameof(state));
|
||
|
|
SelectButtonCommand = new DelegateCommand(OnSelectButton);
|
||
|
|
WindowClosingCommand = new DelegateCommand(OnWindowClosing);
|
||
|
|
}
|
||
|
|
|
||
|
|
public MwMessageBoxState State { get; }
|
||
|
|
|
||
|
|
public bool? DialogResult
|
||
|
|
{
|
||
|
|
get => _dialogResult;
|
||
|
|
set => SetAndNotify(ref _dialogResult, value);
|
||
|
|
}
|
||
|
|
|
||
|
|
public MessageBoxResult Result
|
||
|
|
{
|
||
|
|
get => _result;
|
||
|
|
private set => SetAndNotify(ref _result, value);
|
||
|
|
}
|
||
|
|
|
||
|
|
public ICommand SelectButtonCommand { get; }
|
||
|
|
|
||
|
|
public ICommand WindowClosingCommand { get; }
|
||
|
|
|
||
|
|
private void OnSelectButton(object parameter)
|
||
|
|
{
|
||
|
|
var definition = parameter as MwMessageBoxButtonDefinition;
|
||
|
|
if (definition == null)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
Result = definition.Result;
|
||
|
|
DialogResult = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void OnWindowClosing(object parameter)
|
||
|
|
{
|
||
|
|
if (Result != MessageBoxResult.None)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
Result = MwMessageBox.ResolveFallbackResult(State);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|