void OnZuordnenOhneAlternative(string guid)
        {
            var item       = OhneAlternative.First(teil => teil.Guid == guid);
            var komponente = VergleichsListe.First(teil => teil.Guid == guid);

            if (item != null && komponente != null && SelectedKomponente != null)
            {
                komponente.AlternativeHersteller   = SelectedKomponente.AlternativeHersteller;
                komponente.AlternativeBeschreibung = SelectedKomponente.AlternativeBeschreibung;
                komponente.AlternativeGroesse      = SelectedKomponente.AlternativeGroesse;
                komponente.AlternativeJahr         = SelectedKomponente.AlternativeJahr;
                komponente.AlternativeGewicht      = SelectedKomponente.AlternativeGewicht;
                komponente.AlternativeVorhanden    = true;

                OhneAlternative.Remove(item);

                var ohneZuordnung = OhneKomponente.First(teil => teil.Guid == SelectedKomponente.Guid);
                if (ohneZuordnung != null)
                {
                    OhneKomponente.Remove(ohneZuordnung);
                }

                VergleichsListe.Remove(SelectedKomponente);
                SelectedKomponente = VergleichsListe.First(teil => teil.Guid == guid);
            }
        }
        void OnZuordnenOhneKomponente(string guid)
        {
            var item       = OhneKomponente.First(teil => teil.Guid == guid);
            var komponente = VergleichsListe.First(teil => teil.Guid == guid);

            if (item != null && komponente != null && SelectedKomponente != null)
            {
                SelectedKomponente.AlternativeHersteller   = komponente.AlternativeHersteller;
                SelectedKomponente.AlternativeBeschreibung = komponente.AlternativeBeschreibung;
                SelectedKomponente.AlternativeGroesse      = komponente.AlternativeGroesse;
                SelectedKomponente.AlternativeJahr         = komponente.AlternativeJahr;
                SelectedKomponente.AlternativeGewicht      = komponente.AlternativeGewicht;
                SelectedKomponente.AlternativeVorhanden    = true;

                if (AlternativeBearbeiten)
                {
                    NeuerHersteller  = komponente.AlternativeHersteller;
                    NeueBeschreibung = komponente.AlternativeBeschreibung;
                    NeueGroesse      = komponente.AlternativeGroesse;
                    NeuesJahr        = komponente.AlternativeJahr;
                    NeuesGewicht     = SelectedKomponente.AlternativeGewicht;
                }
                OhneKomponente.Remove(item);

                var ohneZuordnung = OhneAlternative.First(teil => teil.Guid == SelectedKomponente.Guid);
                if (ohneZuordnung != null)
                {
                    OhneAlternative.Remove(ohneZuordnung);
                }

                VergleichsListe.Remove(komponente);
            }
        }
        private void OnHinzufuegen()
        {
            var vm = new SzenarioKomponenteViewModel
            {
                Komponente              = NeueKomponente,
                Gewicht                 = 0,
                Beschreibung            = null,
                Guid                    = Guid.NewGuid().ToString(),
                AlternativeHersteller   = NeuerHersteller,
                AlternativeBeschreibung = NeueBeschreibung,
                AlternativeGroesse      = NeueGroesse,
                AlternativeJahr         = NeuesJahr,
                AlternativeGewicht      = NeuesGewicht,
                AlternativeVorhanden    = true,
                LoeschenAction          = ZeileLoeschen
            };

            vm.PropertyChanged += ContentPropertyChanged;
            VergleichsListe.Add(vm);

            var ohneZuordnung = new OhneZuordnungViewModel
            {
                Guid         = vm.Guid,
                Komponente   = vm.Komponente,
                Beschreibung = vm.Beschreibung,
                Alternative  = vm.AlternativeName,
                Gewicht      = vm.AlternativeGewicht,
                Differenz    = vm.AlternativeDifferenz
            };

            ohneZuordnung.ZuordnenAction = OnZuordnenOhneKomponente;
            OhneKomponente.Add(ohneZuordnung);

            UpdateProperty("GesamtDifferenz");
            UpdateProperty("GesamtGewichtAlternativen");

            NeueKomponente    = "";
            NeuerHersteller   = "";
            NeueBeschreibung  = "";
            NeueGroesse       = "";
            NeuesJahr         = "";
            NeuesGewicht      = 0;
            KomponenteEnabled = true;
        }
        private void ZeileLoeschen(string guid, bool nurAlternative)
        {
            var teil = VergleichsListe.First(item => item.Guid == guid);

            if (teil != null)
            {
                if (nurAlternative)
                {
                    var ohneZuordnung = new OhneZuordnungViewModel
                    {
                        Guid         = teil.Guid,
                        Komponente   = teil.Komponente,
                        Beschreibung = teil.Beschreibung,
                        Gewicht      = teil.Gewicht,
                        Differenz    = -teil.Gewicht,
                        Alternative  = teil.AlternativeName
                    };
                    ohneZuordnung.ZuordnenAction = OnZuordnenOhneAlternative;
                    OhneAlternative.Add(ohneZuordnung);
                }
                else
                {
                    VergleichsListe.Remove(teil);

                    var ohneKomponente = OhneKomponente.FirstOrDefault(item => item.Guid == guid);
                    if (ohneKomponente != null)
                    {
                        OhneKomponente.Remove(ohneKomponente);
                    }
                }

                NeuerHersteller  = "";
                NeueBeschreibung = "";
                NeueGroesse      = "";
                NeuesJahr        = "";
                NeuesGewicht     = 0;
                UpdateProperty("GesamtDifferenz");
                UpdateProperty("GesamtGewichtAlternativen");
            }
        }
        private void EinbauenGewichtsdatenbank(string komponente,
                                               string hersteller,
                                               string beschreibung,
                                               string groesse,
                                               string jahr,
                                               int gewicht)
        {
            var vm = new SzenarioKomponenteViewModel()
            {
                Komponente              = komponente,
                Beschreibung            = null,
                Gewicht                 = 0,
                Guid                    = Guid.NewGuid().ToString(),
                AlternativeHersteller   = hersteller,
                AlternativeBeschreibung = beschreibung,
                AlternativeGroesse      = groesse,
                AlternativeJahr         = jahr,
                AlternativeGewicht      = gewicht,
                AlternativeVorhanden    = true,
                LoeschenAction          = ZeileLoeschen
            };

            vm.PropertyChanged += ContentPropertyChanged;
            VergleichsListe.Add(vm);
            UpdateProperty("GesamtDifferenz");
            UpdateProperty("GesamtGewichtAlternativen");

            var ohneZuordnung = new OhneZuordnungViewModel
            {
                Guid         = vm.Guid,
                Komponente   = vm.Komponente,
                Beschreibung = vm.Beschreibung,
                Alternative  = vm.AlternativeName,
                Gewicht      = vm.AlternativeGewicht,
                Differenz    = vm.AlternativeDifferenz
            };

            ohneZuordnung.ZuordnenAction = OnZuordnenOhneKomponente;
            OhneKomponente.Add(ohneZuordnung);
        }
        private void EinbauenRestekiste(string guid)
        {
            var restteil = Restekiste.First(teil => teil.Guid == guid);

            if (restteil != null)
            {
                var vm = new SzenarioKomponenteViewModel()
                {
                    Komponente              = restteil.Komponente,
                    Beschreibung            = null,
                    Gewicht                 = 0,
                    Guid                    = restteil.Guid,
                    AlternativeHersteller   = restteil.Hersteller,
                    AlternativeBeschreibung = restteil.Beschreibung,
                    AlternativeGroesse      = restteil.Groesse,
                    AlternativeJahr         = restteil.Jahr,
                    AlternativeGewicht      = restteil.Gewicht,
                    AlternativeVorhanden    = true,
                    LoeschenAction          = ZeileLoeschen
                };
                vm.PropertyChanged += ContentPropertyChanged;
                VergleichsListe.Add(vm);
                UpdateProperty("GesamtDifferenz");
                UpdateProperty("GesamtGewichtAlternativen");
                Restekiste.Remove(restteil);

                var ohneZuordnung = new OhneZuordnungViewModel
                {
                    Guid         = vm.Guid,
                    Komponente   = vm.Komponente,
                    Beschreibung = vm.Beschreibung,
                    Alternative  = vm.AlternativeName,
                    Gewicht      = vm.AlternativeGewicht,
                    Differenz    = vm.AlternativeDifferenz
                };
                ohneZuordnung.ZuordnenAction = OnZuordnenOhneKomponente;
                OhneKomponente.Add(ohneZuordnung);
            }
        }