From 38a22e38030a84e78afeeb32ab1b768d9a942802 Mon Sep 17 00:00:00 2001 From: Husky Date: Mon, 23 Mar 2020 13:20:59 +0100 Subject: [PATCH] =?UTF-8?q?MainWindow=20ge=C3=A4ndert,=20dynamische=20Menu?= =?UTF-8?q?=20erzeugt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Interfaces/UI/IObjekteEditViewModel.cs | 5 + .../Objekte/ObjekteEditViewModel.cs | 137 +++++++++++++++++- KanSan.ViewModel/SewerMainMenuViewModel.cs | 28 ++++ KanSan/KanSan.csproj.user | 6 + KanSan/MainWindow.xaml | 2 +- KanSan/MainWindow.xaml.cs | 27 +++- .../ObjekteEditViewModelSampleData.cs | 50 +++++++ KanSan/UI/Objekte/UCObjektEdit.xaml | 26 ++-- KanSan/UI/Objekte/UCObjektEdit.xaml.cs | 12 +- KanSan/UI/UCSewerMainMenu.xaml | 28 ++++ KanSan/UI/UCSewerMainMenu.xaml.cs | 76 ++++++++++ 11 files changed, 374 insertions(+), 23 deletions(-) create mode 100644 KanSan.ViewModel/SewerMainMenuViewModel.cs create mode 100644 KanSan/SampleData/ObjekteEditViewModelSampleData.cs create mode 100644 KanSan/UI/UCSewerMainMenu.xaml create mode 100644 KanSan/UI/UCSewerMainMenu.xaml.cs diff --git a/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs b/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs index f358660..812634e 100644 --- a/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs +++ b/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs @@ -12,5 +12,10 @@ namespace KanSan.Base.Interfaces.UI string PunktUnten { get; set; } int Durchmesser { get; set; } string Material { get; set; } + bool RohrleitungInBetrieb { get; set; } + bool WasserHaltungDurchgefuehrt { get; set; } + bool HaltungGespuelt { get; set; } + bool GenehmigungErforderlich { get; set; } + bool BaustellenAbsicherung { get; set; } } } diff --git a/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs index 465b4a9..b3fcffb 100644 --- a/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs @@ -4,11 +4,12 @@ using KanSan.Base.Interfaces.UI; using KanSan.Base.Models; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; namespace KanSan.ViewModel { - public class ObjekteEditViewModel : IObjekteEditViewModel + public class ObjekteEditViewModel : PropertyChangedClass,IObjekteEditViewModel, INotifyPropertyChanged { IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext()); string strassename; @@ -17,15 +18,127 @@ namespace KanSan.ViewModel string punktUnten; int durchmesser; string material; + bool rohrleitungInBetrieb; + bool wasserHaltungdurchgefuehrt; + bool haltungGespuelt; + bool genehmigungErforderlich; + bool baustellenAbsicherung; private Sewer objekt; - public string StrasseName { get => strassename; set => throw new NotImplementedException(); } - public string Objektnummer { get => objektnummer; set => throw new NotImplementedException(); } - public string PunktOben { get => punktOben; set => throw new NotImplementedException(); } - public string PunktUnten { get => punktUnten; set => throw new NotImplementedException(); } - public int Durchmesser { get => durchmesser; set => throw new NotImplementedException(); } - public string Material { get => material; set => throw new NotImplementedException(); } + #region gettersetters + public string StrasseName + { + get => strassename; + set + { + if (strassename == value) return; + strassename = value; + OnPropertyChanged(); + + } + } + public string Objektnummer + { + get => objektnummer; + set + { + if (objektnummer == value) return; + objektnummer = value; + OnPropertyChanged(); + } + } + public string PunktOben + { + get => punktOben; + set + { + if (punktOben == value) return; + punktOben = value; + OnPropertyChanged(); + } + } + public string PunktUnten + { + get => punktUnten; + set + { + if (punktUnten == value) return; + punktUnten = value; + OnPropertyChanged(); + } + } + public int Durchmesser + { + get => durchmesser; + set + { + if (durchmesser == value) return; + durchmesser = value; + OnPropertyChanged(); + } + } + public string Material + { + get => material; + set + { + if (material == value) return; + material = value; + OnPropertyChanged(); + } + } + public bool RohrleitungInBetrieb + { + get => rohrleitungInBetrieb; + set + { + if (rohrleitungInBetrieb == value) return; + rohrleitungInBetrieb = value; + OnPropertyChanged(); + } + } + public bool WasserHaltungDurchgefuehrt + { + get => wasserHaltungdurchgefuehrt; + set + { + if (wasserHaltungdurchgefuehrt == value) return; + wasserHaltungdurchgefuehrt = value; + OnPropertyChanged(); + } + } + public bool HaltungGespuelt + { + get => haltungGespuelt; + set + { + if (haltungGespuelt == value) return; + haltungGespuelt = value; + OnPropertyChanged(); + } + } + public bool GenehmigungErforderlich + { + get => genehmigungErforderlich; + set + { + if (genehmigungErforderlich == value) return; + genehmigungErforderlich = value; + OnPropertyChanged(); + } + } + public bool BaustellenAbsicherung + { + get => baustellenAbsicherung; + set + { + if (baustellenAbsicherung == value) return; + baustellenAbsicherung = value; + OnPropertyChanged(); + } + } + #endregion public ObjekteEditViewModel(Sewer sewer) { @@ -36,12 +149,22 @@ namespace KanSan.ViewModel objektnummer = objekt.ObjektNummer; durchmesser = objekt.DN; material = objekt.Material.ToString(); + rohrleitungInBetrieb = objekt.RohrleitungInBetrieb; + wasserHaltungdurchgefuehrt = objekt.WasserHaltungDurchgefuehrt; + haltungGespuelt = objekt.HaltungGespuelt; + genehmigungErforderlich = objekt.GenehmigungErforderlich; + baustellenAbsicherung = objekt.BaustellensicherungErforderlich; } public void Speichern() { objekt.StrasseName = strassename; objekt.DN = durchmesser; + objekt.RohrleitungInBetrieb = rohrleitungInBetrieb; + objekt.WasserHaltungDurchgefuehrt = wasserHaltungdurchgefuehrt; + objekt.BaustellensicherungErforderlich = baustellenAbsicherung; + objekt.HaltungGespuelt = haltungGespuelt; + objekt.GenehmigungErforderlich = genehmigungErforderlich; unitOfWork.KanaeleRepository.Update(objekt); unitOfWork.Commit(); diff --git a/KanSan.ViewModel/SewerMainMenuViewModel.cs b/KanSan.ViewModel/SewerMainMenuViewModel.cs new file mode 100644 index 0000000..8e66e25 --- /dev/null +++ b/KanSan.ViewModel/SewerMainMenuViewModel.cs @@ -0,0 +1,28 @@ +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace KanSan.ViewModel +{ + public class SewerMainMenuViewModel : PropertyChangedClass,INotifyPropertyChanged + { + private Sewer model; + + public string ObjektBezeichnung + { + get + { + return model.ObjektNummer; + } + } + + + public SewerMainMenuViewModel(Sewer model) + { + if (model == null) throw new ArgumentNullException(); + this.model = model; + } + } +} diff --git a/KanSan/KanSan.csproj.user b/KanSan/KanSan.csproj.user index 874d3e1..3453c80 100644 --- a/KanSan/KanSan.csproj.user +++ b/KanSan/KanSan.csproj.user @@ -37,6 +37,9 @@ Code + + Code + @@ -75,5 +78,8 @@ Designer + + Designer + \ No newline at end of file diff --git a/KanSan/MainWindow.xaml b/KanSan/MainWindow.xaml index c5582ee..43c6963 100644 --- a/KanSan/MainWindow.xaml +++ b/KanSan/MainWindow.xaml @@ -32,7 +32,7 @@ - + diff --git a/KanSan/MainWindow.xaml.cs b/KanSan/MainWindow.xaml.cs index 3bffc11..62db142 100644 --- a/KanSan/MainWindow.xaml.cs +++ b/KanSan/MainWindow.xaml.cs @@ -31,6 +31,8 @@ namespace KanSan UI.UCProjektList UCProjektList; UI.UCBaustelleList UCBaustelleList; + UI.UCSewerMainMenu uCSewerMainMenu; + public MainWindow() { InitializeComponent(); @@ -111,9 +113,28 @@ namespace KanSan { if (e.Objekt == null) return; (DataContext as MainWindowViewModel).SelectedObjekt = e.Objekt; - UI.UCObjektEdit uCObjektEdit = new UI.UCObjektEdit(); - ContentController.Content = uCObjektEdit; - //Debugger.Break(); + rbObjekte.IsChecked = false; + + uCSewerMainMenu = new UI.UCSewerMainMenu(e.Objekt); + + uCSewerMainMenu.SewerMainMenuSelected += UCSewerMainMenu_SewerMainMenuSelected; + SewerMainMenu.Content = uCSewerMainMenu; + + } + + private void UCSewerMainMenu_SewerMainMenuSelected(object sender, UI.SewerMainMenuItemSelectedEventArgs e) + { + Sewer actualSelectedSewer = (DataContext as MainWindowViewModel).SelectedObjekt; + switch(e.Command) + { + case UI.ESewerMainMenuCommand.STAMMDATEN: + ContentController.Content = new UI.UCObjektEdit(actualSelectedSewer); + break; + + case UI.ESewerMainMenuCommand.NONE: + ContentController.Content = "Wird nicht unterstützt"; + break; + } } private void rbKunden_Checked(object sender, RoutedEventArgs e) diff --git a/KanSan/SampleData/ObjekteEditViewModelSampleData.cs b/KanSan/SampleData/ObjekteEditViewModelSampleData.cs new file mode 100644 index 0000000..4d6b6bc --- /dev/null +++ b/KanSan/SampleData/ObjekteEditViewModelSampleData.cs @@ -0,0 +1,50 @@ +using KanSan.Base.Interfaces.UI; +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.SampleData +{ + class ObjekteEditViewModelSampleData : IObjekteEditViewModel + { + string strasseName; + string objektnummer; + string punktOben; + string punktUnten; + int durchmesser; + string material; + bool rohrleitungInBetrieb; + bool wasserHaltungdurchgefuehrt; + bool haltungGespuelt; + bool genehmigungErforderlich; + bool baustellenAbsicherung; + + + public string StrasseName { get => strasseName; set => throw new NotImplementedException(); } + public string Objektnummer { get => objektnummer; set => throw new NotImplementedException(); } + public string PunktOben { get => punktOben; set => throw new NotImplementedException(); } + public string PunktUnten { get => punktUnten; set => throw new NotImplementedException(); } + public int Durchmesser { get => durchmesser; set => throw new NotImplementedException(); } + public string Material { get => material; set => throw new NotImplementedException(); } + public bool RohrleitungInBetrieb { get => rohrleitungInBetrieb; set => throw new NotImplementedException(); } + public bool WasserHaltungDurchgefuehrt { get => wasserHaltungdurchgefuehrt; set => throw new NotImplementedException(); } + public bool HaltungGespuelt { get => haltungGespuelt; set => throw new NotImplementedException(); } + public bool GenehmigungErforderlich { get => genehmigungErforderlich; set => throw new NotImplementedException(); } + public bool BaustellenAbsicherung { get => baustellenAbsicherung; set => throw new NotImplementedException(); } + + public ObjekteEditViewModelSampleData() + { + strasseName = "Grader Weg"; + objektnummer = "SW01"; + punktOben = objektnummer; + punktUnten = "SW02"; + durchmesser = 150; + material = "Steinzeug"; + rohrleitungInBetrieb = false; + wasserHaltungdurchgefuehrt = true; + haltungGespuelt = true; + genehmigungErforderlich = false; + baustellenAbsicherung = true; + } + } +} diff --git a/KanSan/UI/Objekte/UCObjektEdit.xaml b/KanSan/UI/Objekte/UCObjektEdit.xaml index 3492158..d7e4dde 100644 --- a/KanSan/UI/Objekte/UCObjektEdit.xaml +++ b/KanSan/UI/Objekte/UCObjektEdit.xaml @@ -4,9 +4,14 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:self="clr-namespace:KanSan.ViewModel;assembly=KanSan.ViewModel" + xmlns:iself ="clr-namespace:KanSan.Base.Interfaces.UI;assembly=KanSan.Base" xmlns:local="clr-namespace:KanSan.UI" + xmlns:sd="clr-namespace:KanSan.SampleData" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Background="LightGray"> + + + @@ -23,12 +28,13 @@ +