private void Search_TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            var txt_box_search     = (TextBox)sender;
            var searching_filename = txt_box_search.Text;

            if (volumes != null && volumes.CurrentDirName != null && txt_box_search.IsFocused)
            {
                int i = 0;
                foreach (var file in list_view_files.Items)
                {
                    File_ico_and_name file_ico_name = (File_ico_and_name)file;
                    if (file_ico_name.Name.StartsWith(searching_filename))
                    {
                        file_ico_name.Visible_mode = Visibility.Visible;
                        //оставим нужные элементы
                    }
                    else//скроем
                    {
                        file_ico_name.Visible_mode = Visibility.Collapsed;
                    }

                    i++;
                }
                list_view_files.Items.Refresh();
            }
            else
            {
                ;//негде искать
            }
        }
        private void List_view_files_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            var list_folders_and_files = (ListView)sender;

            if (list_folders_and_files != null && list_folders_and_files.Items.Count > 0 && list_folders_and_files.SelectedIndex >= 0)
            {
                File_ico_and_name file_ico_name      = (File_ico_and_name)list_folders_and_files.SelectedValue;
                string            doc_or_folder_name = file_ico_name.Name;
                var full_path = Path.Combine(volumes.CurrentDirName, doc_or_folder_name);

                if (!string.IsNullOrEmpty(doc_or_folder_name) && Directory.Exists(full_path))
                {
                    if (Directory.Exists(full_path))
                    {
                        try
                        {
                            thread_get_metadata_of_folders_files.Abort();//остановим поток если пользователь решил перейти к другой папке
                            volumes.Directory_down(list_view_files, list_view_path_frames, full_path);
                        }
                        catch (UnauthorizedAccessException)
                        {
                            MessageBox.Show("Вам отказано в доступе к данной папке!");
                        }
                    }
                    else
                    {
                        volumes.Update_listview_folders(list_view_files);
                        MessageBox.Show($"Директория не существует по пути {full_path}!");
                    }
                }
                else//значит это файл
                {
                    if (File.Exists(full_path))
                    {
                        try
                        {
                            Process.Start(full_path);
                        }
                        catch (System.ComponentModel.Win32Exception)//не удалось найти приложение для данного файла
                        {
                            Process.Start(new ProcessStartInfo {
                                FileName = "explorer.exe", Arguments = full_path
                            });                                                                                      //вызовем открыть с помощью и пусть пользователь выберет
                        }
                    }
                    else
                    {
                        volumes.Update_listview_folders(list_view_files);
                        MessageBox.Show($"Файл не существует по пути {full_path}!");
                    }
                }
            }
            else
            {
                ;//элемент не выбран или его нет
            }
        }
        private void List_view_files_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            ListView list_files = (ListView)sender;

            if (list_files.SelectedValue != null)
            {
                data_grid_files_meta_data.Visibility = Visibility.Visible;
                File_ico_and_name file_ico_name = (File_ico_and_name)list_files.SelectedValue;
                var      path_dir = Path.Combine(volumes.CurrentDirName, file_ico_name.Name);
                FileInfo fileinfo = new FileInfo(path_dir);

                if (Previos_file_name != file_ico_name.Name)
                {
                    if (thread_get_metadata_of_folders_files != null)
                    {
                        thread_get_metadata_of_folders_files.Abort();
                    }
                    else
                    {
                        ;//поток еще ни разу не был создан и вызван
                    }
                    if ((fileinfo.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
                    {
                        data_grid_files_meta_data.Items.Clear();
                        //обнулим счетчики и вызовем поток для новой выбранной папки
                        files_counter       = 0;
                        size_folder_in_byte = 0;
                        thread_get_metadata_of_folders_files = new Thread(new ParameterizedThreadStart(Count_folder_size));
                        thread_get_metadata_of_folders_files.Start(path_dir);
                    }
                    else//это не директория а файл
                    {
                        Dispatcher.Invoke(() =>//Добавлено из -за вычисления размера файла в background, чтобы не перетирались значения в datagrid
                        {
                            data_grid_files_meta_data.Items.Clear();

                            foreach (var file_prop in fileinfo.GetType().GetProperties())
                            {
                                if (file_prop.Name == "Length")
                                {
                                    data_grid_files_meta_data.Items.Add(new { Name = file_prop.Name, Value = $"{(long)file_prop.GetValue(fileinfo) >> 10} Кб" });
                                }
                                else
                                {
                                    data_grid_files_meta_data.Items.Add(new { Name = file_prop.Name, Value = file_prop.GetValue(fileinfo) });
                                }
                            }
                        }, DispatcherPriority.ContextIdle);
                    }
                    Previos_file_name = file_ico_name.Name;
                }
                else
                {
                    //мы уже итак вычисляем или вычислили для этого файла метаданные
                }
            }
            else
            {
                ;//клик был не на элемент
            }
        }