using Microsoft.Win32; using PDF_Office.EventAggregators; using PDF_Office.Views; using Prism.Commands; using Prism.Events; using Prism.Ioc; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace PDF_Office.ViewModels { public enum LoadType { /// /// 打开文档 /// Open, /// /// 创建文档 /// Create } public class MainContentViewModel : BindableBase, INavigationAware { private string fileName = "Home"; public string FileName { get { return fileName; } set { SetProperty(ref fileName, value); } } private string filePath; public string FilePath { get { return filePath; } set { SetProperty(ref filePath, value); if (!string.IsNullOrEmpty(filePath)) { FileName = System.IO.Path.GetFileName(filePath); } } } private Visibility fileChanged; public Visibility FileChanged { get { return fileChanged; } set { SetProperty(ref fileChanged, value); } } public DelegateCommand CloseTab { get; set; } private string regionName; public string RegionName { get { return regionName; } set { SetProperty(ref regionName, value); } } public IRegionManager toolregion; public IEventAggregator eventer; public IContainerProvider container; public MainContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, IContainerProvider containerProvider) { toolregion = regionManager; eventer = eventAggregator; container = containerProvider; CloseTab = new DelegateCommand(CloseTabItem); RegionName = Guid.NewGuid().ToString(); System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { NavigationParameters parameters = new NavigationParameters { { "MainViewModel", this } }; toolregion.RequestNavigate(RegionName, "HomeContent", parameters); })); } private void CloseTabItem(object item) { App.mainWindowViewModel?.CloseTabItem(item); App.OpenedFileList.Remove(FilePath); } public void OpenFile(string filePath) { FilePath = filePath; NavigationParameters parameters = new NavigationParameters { { "MainViewModel", this } }; System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { toolregion.RequestNavigate(RegionName, "ViewContent", parameters); })); } public void OnNavigatedTo(NavigationContext navigationContext) { if (navigationContext.Parameters.Count <= 0) return; var filepath = navigationContext.Parameters["filePath"]; if(filepath!=null) { OpenFile(filepath.ToString()); } } public bool IsNavigationTarget(NavigationContext navigationContext) { if (navigationContext.Parameters.Count <= 0) return true; var isAddTab = navigationContext.Parameters["AddTab"]; if (isAddTab!=null&&(bool)isAddTab) { return false; } return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } } }