public ShellKnownFolderViewModel(ShellKnownFolder knownFolder)
        {
            #region Reactive Property

            this.KnownFolder = new ReactiveProperty <ShellKnownFolder>(knownFolder);

            this.Thumbnail = new ReactiveProperty <ShellImageSource>()
                             .AddTo(this.CompositeDisposable);

            this.DisplayName = this.KnownFolder
                               .Select(x => x.DisplayName)
                               .ToReactiveProperty();

            this.CanonicalName = this.KnownFolder
                                 .Select(x => x.CanonicalName)
                                 .ToReactiveProperty();

            this.Category = this.KnownFolder
                            .Select(x => x.Category.ToString())
                            .ToReactiveProperty();

            this.Description = this.KnownFolder
                               .Select(x => x.Description)
                               .ToReactiveProperty();

            this.Path = this.KnownFolder
                        .Select(x => x.Path)
                        .ToReactiveProperty();

            #endregion
        }
        public static Task <ShellKnownFolderViewModel> CreateAsync(ShellKnownFolder shellKnownFolder)
        {
            return(Task.Run(() =>
            {
                var result = new ShellKnownFolderViewModel(shellKnownFolder);
                result.Thumbnail.Value = new ShellImageSource(shellKnownFolder.GetThumbnail(ThumbnailMode.ListView));

                return result;
            }));
        }