69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
using Prism.Commands;
|
|
using Prism.Regions;
|
|
using System.Linq;
|
|
using Unity;
|
|
|
|
namespace RIZO.Client.Common
|
|
{
|
|
public abstract class ViewModelBase : INavigationAware
|
|
{
|
|
// * 未保存
|
|
public string PageTitle { get; set; } = "标签标题";
|
|
public bool IsCanClose { get; set; } = true;
|
|
|
|
private string NavUri { get; set; }
|
|
public DelegateCommand CloseCommand
|
|
{
|
|
get => new DelegateCommand(() =>
|
|
{
|
|
// 关闭操作
|
|
// 根据URI获取对应的已注册对象名称
|
|
var obj = _unityContainer.Registrations.FirstOrDefault(v => v.Name == NavUri);
|
|
string name = obj.MappedToType.Name;
|
|
// 根据对象名称再从Region的Views里面找到对象
|
|
if (!string.IsNullOrEmpty(name))
|
|
{
|
|
var region = _regionManager.Regions["MainContentRegion"];
|
|
var view = region.Views.FirstOrDefault(v => v.GetType().Name == name);
|
|
// 把这个对象从Region的Views里移除
|
|
if (view != null)
|
|
region.Remove(view);
|
|
}
|
|
});
|
|
}
|
|
|
|
public DelegateCommand RefreshCommand { get => new DelegateCommand(Refresh); }
|
|
public DelegateCommand AddCommand { get => new DelegateCommand(AddItem); }
|
|
|
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
|
{
|
|
NavUri = navigationContext.Uri.ToString();
|
|
}
|
|
|
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
IUnityContainer _unityContainer;
|
|
IRegionManager _regionManager;
|
|
public ViewModelBase(IUnityContainer unityContainer, IRegionManager regionManager)
|
|
{
|
|
_unityContainer = unityContainer;
|
|
_regionManager = regionManager;
|
|
|
|
this.Refresh();
|
|
}
|
|
|
|
public virtual void Refresh() { }
|
|
|
|
public virtual void AddItem() { }
|
|
}
|
|
}
|