/// <summary> /// 根据后缀选择最佳视图,并且切换至最佳视图 /// </summary> /// <param name="extension">要切换的后缀</param> /// <param name="argsType">打开方式</param> private IFileViewer _Open(string extension, FileViewerArgsType argsType) { if (this.FileViewers == null || this.FileViewers.Count == 0) { return(null); } FileViewerType type = FileViewerConfig.Config.BestSupport(extension, argsType, this.FileViewers.Select(p => p.ViewerType).ToArray()); IFileViewer viewer = this.FileViewers.Where(p => p.ViewerType == type).FirstOrDefault(); foreach (UIElement ui in this.FileViewers) { if (ui == null) { continue; } if (ui == viewer) { ui.Visibility = System.Windows.Visibility.Visible; IFileViewer ifv = ui as IFileViewer; } else { ui.Visibility = System.Windows.Visibility.Collapsed; } } this.CurrentFileViewer = viewer; return(viewer); }
/// <summary> /// 强制切换至某视图 /// </summary> /// <param name="type">要切换至的视图类型</param> /// <returns>是否成功切换</returns> public bool ChangeToView(FileViewerType type) { if (this.FileViewers == null || this.FileViewers.Count == 0) { return(false); } IFileViewer ifv = this.FileViewers.Where(p => p.ViewerType == type).FirstOrDefault(); if (ifv != null && ifv is UIElement) { UIElement ui = ifv as UIElement; foreach (UIElement element in this.FileViewers) { if (element != null && element != ui) { element.Visibility = System.Windows.Visibility.Collapsed; } } ui.Visibility = System.Windows.Visibility.Visible; return(true); } else { return(false); } }
/// <summary> /// 判断某个视图类型的某种扩展名是否支持 /// </summary> /// <param name="type">视图类型</param> /// <param name="extension">扩展名</param> /// <returns></returns> public bool IsSupport(FileViewerType type, string extension) { if (type == FileViewerType.None) { return(true); } if (extension.IsNullOrEmptyOrWhiteSpace()) { return(false); } var q = from i in this.Items from e in i.Extensions where i.FileViewer == type && e.Extension.ToLower().Trim().Equals(extension.Trim().ToLower()) orderby e.Priority select e; return(q.Count() > 0); }