public void StartBrowse()
        {
            Window parentWindow = Window.GetWindow(this);

            //Log.Here().Activity($"LastFileLocation is {LastFileLocation} FileLocationText: {FileLocationText}");

            if (!String.IsNullOrEmpty(FileLocationText) && FileCommands.IsValidPath(FileLocationText))
            {
                if (BrowseType == FileBrowseType.File)
                {
                    if (FileCommands.IsValidFilePath(FileLocationText))
                    {
                        var parentDirectory = new DirectoryInfo(FileLocationText);
                        if (parentDirectory != null)
                        {
                            LastFileLocation = parentDirectory.Parent.FullName;
                        }
                    }
                    else
                    {
                        LastFileLocation = FileLocationText;
                    }
                }
                else
                {
                    var directory = new DirectoryInfo(FileLocationText);
                    if (directory != null)
                    {
                        LastFileLocation = directory.FullName;
                    }
                }
            }

            if (!FileCommands.IsValidPath(LastFileLocation))
            {
                if (AppController.Main.CurrentModule != null && AppController.Main.CurrentModule.ModuleData != null)
                {
                    LastFileLocation = DefaultPaths.ModuleRootFolder(AppController.Main.CurrentModule.ModuleData);
                }
                else
                {
                    LastFileLocation = DefaultPaths.RootFolder;
                }
                // Path.GetFullPath(Assembly.GetExecutingAssembly().Location);
            }

            if (BrowseType == FileBrowseType.File)
            {
                CommonFileDialog fileDialog = null;

                if (BrowseMode == FileBrowserMode.Open)
                {
                    var openFileDialog = new CommonOpenFileDialog();
                    openFileDialog.Multiselect = false;
                    fileDialog = openFileDialog;
                }
                else if (BrowseMode == FileBrowserMode.Save)
                {
                    var saveFileDialog = new CommonSaveFileDialog();
                    saveFileDialog.AlwaysAppendDefaultExtension = false;
                    saveFileDialog.OverwritePrompt = true;
                    fileDialog = saveFileDialog;
                }

                if (fileDialog != null)
                {
                    fileDialog.Title            = OpenFileText;
                    fileDialog.InitialDirectory = LastFileLocation;
                    string fileName = Path.GetFileName(LastFileLocation);

                    //if (!String.IsNullOrWhiteSpace(DefaultExt)) fileDialog.DefaultExtension = DefaultExt;

                    if (Filters != null)
                    {
                        if (Filters.Count <= 0)
                        {
                            Filters.Add(CommonFileFilters.All);
                        }

                        foreach (var filter in Filters)
                        {
                            fileDialog.Filters.Add(new CommonFileDialogFilter(filter.Name, filter.Values));
                        }
                    }
                    else
                    {
                        fileDialog.Filters.Add(new CommonFileDialogFilter("All Files", "*.*"));
                    }

                    if (FileCommands.IsValidFilePath(FileLocationText))
                    {
                        fileDialog.DefaultFileName = Path.GetFileName(FileLocationText);
                    }
                    else if (!String.IsNullOrWhiteSpace(DefaultFileName))
                    {
                        if (!String.IsNullOrWhiteSpace(DefaultExt))
                        {
                            fileDialog.DefaultFileName = DefaultFileName + DefaultExt;
                        }
                        else
                        {
                            fileDialog.DefaultFileName = DefaultFileName;
                        }
                    }
                    //Log.Here().Activity($"DefaultFileName: {fileDialog.DefaultFileName}");

                    var result = fileDialog.ShowDialog(parentWindow);

                    if (result == CommonFileDialogResult.Ok)
                    {
                        string filename = fileDialog.FileName;

                        if (fileDialog is CommonOpenFileDialog openFileDialog)
                        {
                            filename = String.Join(";", openFileDialog.FileNames);
                        }
                        else if (fileDialog is CommonSaveFileDialog saveFileDialog)
                        {
                            filename = saveFileDialog.FileName;
                        }

                        if (!FileCommands.IsValidFilePath(filename))
                        {
                            filename = filename.CleanFileName();
                            filename = Path.GetFullPath(filename);
                        }


                        SkipNext = true;
                        if (filename.Contains("%20"))
                        {
                            filename = Uri.UnescapeDataString(filename);                             // Get rid of %20
                        }
                        filename = filename.Replace(DefaultPaths.AppFolder, "");

                        FileLocationText = filename;
                        LastFileLocation = Path.GetDirectoryName(FileLocationText);
                        OnOpen?.Execute(FileLocationText);
                    }
                }
            }
            else if (BrowseType == FileBrowseType.Directory)
            {
                /*
                 * VistaFolderBrowserDialog folderDialog = new VistaFolderBrowserDialog();
                 * folderDialog.SelectedPath = LastFileLocation;
                 * folderDialog.Description = OpenFileText;
                 * folderDialog.UseDescriptionForTitle = true;
                 * folderDialog.ShowNewFolderButton = true;
                 *
                 * Nullable<bool> result = folderDialog.ShowDialog(parentWindow);
                 */

                CommonFileDialog fileDialog = null;

                if (BrowseMode == FileBrowserMode.Open)
                {
                    var openFileDialog = new CommonOpenFileDialog();
                    openFileDialog.Multiselect             = false;
                    openFileDialog.AllowNonFileSystemItems = true;
                    openFileDialog.IsFolderPicker          = true;

                    fileDialog = openFileDialog;
                }
                else if (BrowseMode == FileBrowserMode.Save)
                {
                    fileDialog = new CommonSaveFileDialog();
                }

                if (fileDialog != null)
                {
                    fileDialog.Title            = OpenFileText;
                    fileDialog.InitialDirectory = LastFileLocation;
                    fileDialog.DefaultDirectory = Path.GetFullPath(DefaultPaths.RootFolder);

                    var result = fileDialog.ShowDialog(parentWindow);

                    if (String.IsNullOrWhiteSpace(DefaultFileName))
                    {
                        if (FileCommands.IsValidFilePath(FileLocationText))
                        {
                            fileDialog.DefaultFileName = Path.GetDirectoryName(FileLocationText);
                        }
                    }
                    else
                    {
                        fileDialog.DefaultFileName = DefaultFileName;
                    }

                    if (result == CommonFileDialogResult.Ok)
                    {
                        string path = "";

                        if (BrowseMode == FileBrowserMode.Open && fileDialog is CommonOpenFileDialog openFileDialog)
                        {
                            path = openFileDialog.FileNames.First();
                        }
                        else
                        {
                            path = fileDialog.FileName;
                        }

                        if (path.Contains("%20"))
                        {
                            path = Uri.UnescapeDataString(path);                             // Get rid of %20
                        }

                        path = path.Replace(DefaultPaths.AppFolder, "");

                        SkipNext         = true;
                        FileLocationText = path;
                        LastFileLocation = FileLocationText;
                        OnOpen?.Execute(FileLocationText);
                    }
                }
            }

            AutoScrollTextbox();
        }