/// <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);
            }
        }
Exemplo n.º 3
0
        /// <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);
        }