using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InSituLaboratory.ViewModels.Pages { public class ViewModelBase : BindableBase, INavigationAware { public string PageTitle { get; set; } = "页面标题"; public bool IsCanClose { get; set; } = true; public string SearchKey { get; set; } public DelegateCommand CloseCommand { get; set; } public DelegateCommand RefreshCommand { get; set; } public DelegateCommand ModifyCommand { get; set; } public DelegateCommand DeleteCommand { get; set; } IRegionManager _regionManager; public ViewModelBase(IRegionManager regionManager) { _regionManager = regionManager; CloseCommand = new DelegateCommand(DoClose); RefreshCommand = new DelegateCommand(Refresh); ModifyCommand = new DelegateCommand(DoModify); DeleteCommand = new DelegateCommand(DoDelete); } private void DoClose() { //拿到主区域,从区域里移除对应的页面,根据页面的名称 var region = _regionManager.Regions["MainRegion"]; var view = region.Views.Where(v => v.GetType().Name == PageName).FirstOrDefault(); if (view != null) { region.Remove(view); } } public virtual void Refresh() { } public virtual void DoModify(object model) { } public virtual void DoDelete(object model) { } private string PageName { get; set; } public void OnNavigatedTo(NavigationContext navigationContext) { PageName = navigationContext.Uri.ToString(); } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } } }