using Prism.Commands;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Prism.Common.BaseViewModel
{
/// <summary>
/// 对话框ViewModel基类(Prism)
/// </summary>
public abstract class PrismDialogViewModel : PrismViewModel, IDialogAware
{
public PrismDialogViewModel()
{
Close = new DelegateCommand(DoClose, CanDoClose);
}
/// <summary>
/// 请求关闭对话框委托
/// </summary>
public virtual event Action<IDialogResult> RequestClose;
/// <summary>
/// 调用请求关闭对话框委托
/// </summary>
/// <param name="dialogResult">对话框返回接口</param>
protected virtual void CallRequestClose(IDialogResult dialogResult)
{
RequestClose?.Invoke(dialogResult);
}
/// <summary>
/// 判断窗口是否可关闭逻辑
/// </summary>
/// <returns></returns>
public virtual bool CanCloseDialog()
{
return true;
}
/// <summary>
/// 窗体关闭后调用
/// </summary>
public virtual void OnDialogClosed()
{
}
/// <summary>
/// 窗体打开时调用
/// </summary>
/// <param name="parameters"></param>
public abstract void OnDialogOpened(IDialogParameters parameters);
/// <summary>
/// 关闭对话框指令
/// </summary>
public virtual DelegateCommand Close { get; set; }
protected virtual void DoClose()
{
CallRequestClose(new DialogResult(ButtonResult.Cancel));
}
protected virtual bool CanDoClose()
{
return true;
}
}
}
C# 对话框ViewModel基类(Prism)
最新推荐文章于 2024-07-30 22:02:21 发布