public MainWindow()
        {
            InitializeComponent();
            //mvm = testPopulate();
            mvm         = FileHandling.loadFiles();
            DataContext = mvm;

            //List<ViewModels.Tag> allTags = new List<ViewModels.Tag>();
            //for (int i = 1; i < 10; i++)
            //{
            //    allTags.Add(new ViewModels.Tag("Tag"+i.ToString()));
            //}
            //ViewModels.WatchedFile wf = new ViewModels.WatchedFile("testname", "testpath",
            //    new ObservableCollection<ViewModels.Tag>() {new ViewModels.Tag("Tag_File_1"), new ViewModels.Tag("Tag_File_2") },
            //    new ObservableCollection<ViewModels.WatchedFile>());
        }
        void TV_Drop(object sender, DragEventArgs e)
        {
            if (!doDragDrop)
            {
                return;
            }
            //DependencyObject uie = TV_Sort.InputHitTest(e.GetPosition(TV_Sort)) as DependencyObject;
            ViewModels.WatchedFile dragItem = e.Data.GetData(typeof(ViewModels.WatchedFile)) as ViewModels.WatchedFile;
            if (dragItem == null)
            {
                return;
            }
            ViewModels.WatchedFile dropOnItem = null;
            ObservableCollection <ViewModels.WatchedFile> dropOnList = null;

            switch (((DependencyObject)e.OriginalSource).DependencyObjectType.SystemType.Name)
            {
            case "TextBlock":
                dropOnItem = (e.OriginalSource as TextBlock).DataContext as ViewModels.WatchedFile;
                break;

            case "Image":
                dropOnItem = (e.OriginalSource as Image).DataContext as ViewModels.WatchedFile;
                break;

            case "Border":
                dropOnItem = (e.OriginalSource as Border).DataContext as ViewModels.WatchedFile;
                break;

            default:
                if (e.OriginalSource is Grid)
                {
                    dropOnList = (e.OriginalSource as Grid).DataContext as ObservableCollection <ViewModels.WatchedFile>;
                }
                else
                {
                    return;
                }
                break;
            }

            if (dropOnItem != null)
            {
                if (dropOnItem == dragItem)
                {
                    return;
                }
                if (!string.IsNullOrEmpty(dropOnItem.Path))
                {
                    MessageBox.Show("You cant drop something on another file, drop it on a folder instead.");
                    return;
                }
                FileHandling.removeFileFromWatchList(mvm.WatchedFiles, dragItem);
                doDragDrop = true;
                dropOnItem.Subs.Add(dragItem);
                foreach (ViewModels.WatchedFile file in mvm.WatchedFiles)
                {
                    FileHandling.refeshFilesInView(file);
                }
                e.Handled = true;
            }
            else //if (dropOnList == null)
            {
                FileHandling.removeFileFromWatchList(mvm.WatchedFiles, dragItem);
                doDragDrop = true;
                mvm.WatchedFiles.Add(dragItem);
                e.Handled = true;
            }
            doDragDrop = false;
        }
        private void TV_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            if (TV.SelectedItem != null)
            {
                ViewModels.WatchedFile selected = ((ViewModels.WatchedFile)TV.SelectedItem);
                B_Explorer.Visibility = Visibility.Collapsed;
                B_Open.Visibility     = Visibility.Collapsed;
                G_Show.Children.Clear();
                if (!string.IsNullOrEmpty(selected.Path))
                {
                    if (!File.Exists(selected.Path))
                    {
                        if (MessageBox.Show("Die Datei wurde gelöscht oder verschoben. Wollen sie die Datei aus der Liste entfernen?",
                                            "Datei nicht gefunden", MessageBoxButton.YesNo, MessageBoxImage.Exclamation) == MessageBoxResult.Yes)
                        {
                            FileHandling.removeFileFromWatchList(mvm.WatchedFiles, selected);
                            doDragDrop = true;
                        }
                        return;
                    }
                    if (selected.Path.EndsWith("txt") || selected.Path.EndsWith("xml") || selected.Path.EndsWith("xsd"))
                    {
                        B_Explorer.Visibility = Visibility.Visible;
                        B_Open.Visibility     = Visibility.Visible;
                        Rectangle r = new Rectangle();
                        r.Margin          = new Thickness(0);
                        r.Stroke          = new SolidColorBrush(Colors.Gray);
                        r.StrokeThickness = 1;

                        ScrollViewer sv = new ScrollViewer();
                        sv.Margin = new Thickness(1);
                        sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                        sv.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                        TextBlock TB = new TextBlock();
                        TB.Margin = new Thickness(0);
                        TB.Text   = File.ReadAllText(selected.Path);

                        sv.Content = TB;
                        G_Show.Children.Add(sv);
                        G_Show.Children.Add(r);
                    }

                    else if (selected.Path.EndsWith("pdf"))
                    {
                        B_Explorer.Visibility = Visibility.Visible;
                        B_Open.Visibility     = Visibility.Visible;
                        Rectangle r = new Rectangle();
                        r.Margin          = new Thickness(0);
                        r.Stroke          = new SolidColorBrush(Colors.Gray);
                        r.StrokeThickness = 1;

                        ScrollViewer sv = new ScrollViewer();
                        sv.Margin = new Thickness(1);
                        sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                        sv.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                        WebBrowser WB = new WebBrowser();
                        WB.Margin = new Thickness(0);
                        WB.Navigate("file:///" + selected.Path);

                        sv.Content = WB;
                        G_Show.Children.Add(sv);
                        G_Show.Children.Add(r);
                    }
                }
            }
        }
 private void Window_Closing(object sender, CancelEventArgs e)
 {
     FileHandling.saveFiles(mvm);
 }