public void Zureucksetzen()
        {
            ResteListe.Clear();
            _deletedItems.Clear();

            foreach (var item in _dateiCache)
            {
                foreach (var file in item.Item2)
                {
                    try
                    {
                        File.Delete(Path.Combine("Daten", "Temp", file.Guid + "." + file.Dateiendung));
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            _dateiCache.Clear();

            var teileliste = new List <RestteilDto>();

            PluginManager.DbManager.GetEinzelteile(ref teileliste);
            foreach (var item in teileliste)
            {
                var viewModel = new RestteilViewModel(item)
                {
                    LoeschenAction    = Loeschen,
                    NachObenAction    = NachObenSortieren,
                    NachUntenAction   = NachUntenSortieren,
                    GetDateiCacheFunc = GetDateiCache,
                    SaveDateiCache    = AktualisiereDateiCache
                };
                viewModel.PropertyChanged += ContentPropertyChanged;
                ResteListe.Add(viewModel);
            }

            IsDirty = false;
        }
        private void Hinzufuegen(Window window)
        {
            var dialog = new NeuesEinzelteilDialog
            {
                Top   = window.Top + 40,
                Left  = window.Left + (window.ActualWidth - 600) / 2,
                Owner = window
            };
            var viewModel = new NeuesEinzelteilViewModel(EinzelteilBearbeitenEnum.Restteil,
                                                         new List <EinzelteilAuswahlViewModel>(),
                                                         new List <WunschteilAuswahlViewModel>())
            {
                CloseAction = dialog.Close
            };

            dialog.DataContext = viewModel;
            dialog.ShowDialog();

            if (viewModel.IsOk)
            {
                switch (viewModel.Auswahl)
                {
                case SourceEnum.NeuesEinzelteil:
                {
                    var neuesEinzelteil = new RestteilViewModel(new RestteilDto
                        {
                            Guid          = Guid.NewGuid().ToString(),
                            Komponente    = viewModel.NeuViewModel.Komponente,
                            Hersteller    = viewModel.NeuViewModel.Hersteller,
                            Beschreibung  = viewModel.NeuViewModel.Beschreibung,
                            Groesse       = viewModel.NeuViewModel.Groesse,
                            Jahr          = viewModel.NeuViewModel.Jahr,
                            DatenbankId   = "",
                            DatenbankLink = "",
                            Preis         = viewModel.NeuViewModel.Preis,
                            Gewicht       = viewModel.NeuViewModel.Gewicht
                        })
                    {
                        NachObenAction    = NachObenSortieren,
                        NachUntenAction   = NachUntenSortieren,
                        LoeschenAction    = Loeschen,
                        GetDateiCacheFunc = GetDateiCache,
                        SaveDateiCache    = AktualisiereDateiCache
                    };
                    neuesEinzelteil.PropertyChanged += ContentPropertyChanged;
                    neuesEinzelteil.IsNeueKomponente = true;
                    ResteListe.Add(neuesEinzelteil);

                    break;
                }

                case SourceEnum.AusDatei:
                {
                    var importer = new TeileImporter();
                    foreach (var item in importer.ImportEinzelteile(viewModel.DateiViewModel.Datei))
                    {
                        var neuesEinzelteil = new RestteilViewModel(item)
                        {
                            NachObenAction    = NachObenSortieren,
                            NachUntenAction   = NachUntenSortieren,
                            LoeschenAction    = Loeschen,
                            GetDateiCacheFunc = GetDateiCache,
                            SaveDateiCache    = AktualisiereDateiCache
                        };
                        neuesEinzelteil.PropertyChanged += ContentPropertyChanged;
                        neuesEinzelteil.IsNeueKomponente = true;
                        ResteListe.Add(neuesEinzelteil);
                    }
                    _dateiCache.AddRange(importer.DateiCache);

                    break;
                }

                case SourceEnum.AusGewichtsdatenbank:
                {
                    foreach (var teil in viewModel.DatenbankViewModel.Datenbankteile.Where(teil => teil.IsChecked).ToList())
                    {
                        if (teil.IsChecked)
                        {
                            var neuesEinzelteil = new RestteilViewModel(new RestteilDto
                                {
                                    Guid          = Guid.NewGuid().ToString(),
                                    Komponente    = teil.Komponente,
                                    Hersteller    = teil.Hersteller,
                                    Beschreibung  = teil.Beschreibung,
                                    Groesse       = teil.Groesse,
                                    Jahr          = teil.Jahr,
                                    DatenbankId   = teil.DatenbankId,
                                    DatenbankLink = teil.DatenbankLink,
                                    Preis         = 0,
                                    Gewicht       = teil.Gewicht
                                })
                            {
                                NachObenAction    = NachObenSortieren,
                                NachUntenAction   = NachUntenSortieren,
                                LoeschenAction    = Loeschen,
                                GetDateiCacheFunc = GetDateiCache,
                                SaveDateiCache    = AktualisiereDateiCache
                            };
                            neuesEinzelteil.PropertyChanged += ContentPropertyChanged;
                            neuesEinzelteil.IsNeueKomponente = true;
                            ResteListe.Add(neuesEinzelteil);
                        }
                    }
                    break;
                }
                }

                IsDirty = true;
            }
        }