Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
        }