/// <summary> /// 其它程序打开命令; /// </summary> /// <param name="vm"></param> /// <returns></returns> private static ICommandItem CreateOpenFileWithAnotherProCommandItem(Contracts.FileExplorer.ViewModels.IFolderBrowserViewModel vm) { var comm = CreateOpenFileWithAnotherProCommand(vm); var cmi = CommandItemFactory.CreateNew(comm); cmi.Name = LanguageService.FindResourceString(Constants.ContextCommandName_OpenFileWithAnotherPro); cmi.Sort = 128; return(cmi); }
public static DelegateCommand CreateOpenFileWithAnotherProCommand(Contracts.FileExplorer.ViewModels.IFolderBrowserViewModel vm) { var comm = new DelegateCommand(() => { var viewerPath = DialogService.Current.OpenFile( $"({LanguageService.FindResourceString("Executable")})|*.exe"); if (string.IsNullOrEmpty(viewerPath)) { return; } //添加查看器; var viewerName = Path.GetFileName(viewerPath); ViewerService.Current.AddViewer(viewerName, viewerPath); //对所有的视图模型上下文添加命令项; var vms = GetAllFolderViewModels(); if (vms != null) { foreach (var fvm in vms) { var openWithCmi = fvm.ContextCommands?.FirstOrDefault(p => p.GUID == Constants.CommandItemGUID_OpenFileWith); if (openWithCmi == null) { continue; } var cmi = CreateOpenFileWithProCommandItem(viewerName, viewerPath, fvm); openWithCmi.AddChild(cmi); } } //执行查看命令; OpenFileWithPro(viewerPath, vm); }); return(comm); }
/// <summary> ///使用指定程序打开视图模型中选定的文件; /// </summary> /// <param name="viewerPath"></param> /// <param name="vm"></param> private static void OpenFileWithPro(string viewerPath, Contracts.FileExplorer.ViewModels.IFolderBrowserViewModel vm) { if (vm.SelectedFileRow?.File == null) { return; } var fileName = SaveFileToTemp(vm.SelectedFileRow.File); if (string.IsNullOrEmpty(fileName)) { LoggerService.WriteCallerLine($"{nameof(fileName)} can't be null."); return; } if (!File.Exists(fileName)) { LoggerService.WriteCallerLine($"The file {fileName} can't be found."); return; } ViewerService.Current.OpenFileWith(fileName, viewerPath); }
private static DelegateCommand CreateOpenFileWithProCommand(string viewerPath, Contracts.FileExplorer.ViewModels.IFolderBrowserViewModel vm) { var comm = new DelegateCommand(() => { OpenFileWithPro(viewerPath, vm); }); vm.SelectedFileChanged += delegate { comm.RaiseCanExecuteChanged(); }; return(comm); }
/// <summary> /// 创建打开文件的命令; /// </summary> /// <param name="viewerName"></param> /// <param name="viewerPath"></param> /// <param name="vm"></param> /// <returns></returns> private static ICommandItem CreateOpenFileWithProCommandItem(string viewerName, string viewerPath, Contracts.FileExplorer.ViewModels.IFolderBrowserViewModel vm) { var comm = CreateOpenFileWithProCommand(viewerPath, vm); var cmi = CommandItemFactory.CreateNew(comm); cmi.Name = viewerName; return(cmi); }