You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
3.1 KiB

using System.Windows;
using System.Windows.Input;
using HandyControl.Controls;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.Grading;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.BaseWindow;
public class BaseControlVM : BaseViewModel
{
string _windowTitle;
private Visibility _showFunctionButton;
private string _functionButtonIcon;
private Object _viewContent;
public string WindowTitle { get { return _windowTitle; } set { _windowTitle = value; OnPropertyChanged("WindowTitle"); } }
public Visibility ShowFunctionButton { get { return _showFunctionButton; } set { _showFunctionButton = value; OnPropertyChanged("ShowFunctionButton"); } }
public string FunctionButtonIcon { get { return _functionButtonIcon; } set { _functionButtonIcon = value; OnPropertyChanged("FunctionButtonIcon"); } }
public Object ViewControl { get { return _viewContent; } set { _viewContent = value; OnPropertyChanged("ViewControl"); } }
public object Content { get; }
public ICommand CloseCommand { get; }
/// <summary>
/// 构造:创建一个带有子页面的模板,并指定子窗口标题,并指定右侧按钮事件内容
/// </summary>
/// <param name="vm">子页面</param>
/// <param name="windowTitle">子窗口标题</param>
/// <param name="Function">事件内哦那个</param>
public BaseControlVM(BaseViewModel vm, string windowTitle, ICommand Function)
{
Content = vm;
WindowTitle = windowTitle;
CloseCommand = new RelayCommand(CloseVM);
}
/// <summary>
/// 构造:创建一个带有子页面的模板,并指定子窗口标题
/// </summary>
/// <param name="vm">子页面</param>
/// <param name="windowTitle">子窗口标题</param>
public BaseControlVM(BaseViewModel vm, string windowTitle)
{
Content = vm;
WindowTitle = windowTitle;
CloseCommand = new RelayCommand(CloseVM);
}
/// <summary>
/// 构造:创建一个带有子页面的模板
/// </summary>
/// <param name="vm"></param>
public BaseControlVM(BaseViewModel vm)
{
Content = vm;
CloseCommand = new RelayCommand(CloseVM);
}
/// <summary>
/// 关闭并退回至上一个页面
/// </summary>
/// <param name="parameter"></param>
public void CloseVM(object parameter)
{
if(Content is GradingResultVM)
{
bool isSaved = (Content as GradingResultVM).isSaved;
if (isSaved) {
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
}
else {
MessageBox message = new MessageBox();
MessageBoxResult result = message.ShowAsk(MultilingualHelper.getString("DiamodResultCloseConfirm"));
if (MessageBoxResult.OK.Equals(result))
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
}
}
}
else
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
}
}
}