Viewmodel erweitert

This commit is contained in:
Husky
2020-02-22 17:28:08 +01:00
parent f37a7c5dd4
commit d7ea23f812
7 changed files with 138 additions and 9 deletions

View File

@@ -7,6 +7,9 @@
</ApplicationDefinition>
</ItemGroup>
<ItemGroup>
<Compile Update="UI\Kunde\UCKundeList.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="UI\Projekt\WindowProjektEdit.xaml.cs">
<SubType>Code</SubType>
</Compile>
@@ -18,6 +21,9 @@
<Page Update="MainWindow.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="UI\Kunde\UCKundeList.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="UI\Projekt\WindowProjektEdit.xaml">
<SubType>Designer</SubType>
</Page>

View File

@@ -30,10 +30,19 @@ namespace KanSan
this.Title = ProgrammHashVersion.GIT_HASH;
UI.UCKundeEdit uCKundeEdit = new UI.UCKundeEdit();
ContentController.Content = uCKundeEdit;
/*UI.UCKundeEdit uCKundeEdit = new UI.UCKundeEdit();
ContentController.Content = uCKundeEdit;*/
UI.UCKundeList uCKundeList = new UI.UCKundeList();
uCKundeList.KundeAdded += UCKundeList_KundeAdded;
ContentController.Content = uCKundeList;
}
private void UCKundeList_KundeAdded(object sender, UI.KundeAddedKlickEventArgs e)
{
UI.UCKundeEdit uCKundeEdit = new UI.UCKundeEdit(e.kunde);
ContentController.Content = uCKundeEdit;
}
}
}

View File

@@ -24,17 +24,17 @@ namespace KanSan.UI
{
//private Kunde kunde = null;
//private UnitOfWork unitOfWork = null;
public UCKundeEdit()
public UCKundeEdit(Kunde kunde = null)
{
InitializeComponent();
this.DataContext = new KundeViewModel();
this.DataContext = new KundenEditViewModel(kunde);
}
private void Speichern_Click(object sender, RoutedEventArgs e)
{
((KundeViewModel)DataContext).Speichern();
((KundenEditViewModel)DataContext).Speichern();
}
}

View File

@@ -0,0 +1,17 @@
<UserControl x:Class="KanSan.UI.UCKundeList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:KanSan.UI"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<DataGrid ItemsSource="{Binding Kunden}" />
<Button Grid.Row="1" Name="NeueKunde" Content="Neue Kunde anlegen" Click="NeueKunde_Click" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,50 @@
using KanSan.Base.Models;
using KanSan.ViewModel;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace KanSan.UI
{
/// <summary>
/// Interaktionslogik für UCKundeList.xaml
/// </summary>
public partial class UCKundeList : UserControl
{
public UCKundeList()
{
InitializeComponent();
this.DataContext = new KundenListViewModel();
}
private void NeueKunde_Click(object sender, RoutedEventArgs e)
{
KundeAddedKlickEventArgs args = new KundeAddedKlickEventArgs();
args.kunde = (DataContext as KundenListViewModel).NeueKunde();
OnKlickedKunde(args);
}
protected virtual void OnKlickedKunde(KundeAddedKlickEventArgs e)
{
EventHandler<KundeAddedKlickEventArgs> handler = KundeAdded;
if (handler != null)
handler(this, e);
}
public event EventHandler<KundeAddedKlickEventArgs> KundeAdded;
}
public class KundeAddedKlickEventArgs : EventArgs
{
public Kunde kunde { get; set; }
}
}

View File

@@ -9,7 +9,7 @@ using System.Text;
namespace KanSan.ViewModel
{
class KundeViewModel : PropertyChangedClass, INotifyPropertyChanged
class KundenEditViewModel : PropertyChangedClass, INotifyPropertyChanged
{
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());
@@ -88,9 +88,12 @@ namespace KanSan.ViewModel
}
#endregion
public KundeViewModel()
public KundenEditViewModel(Kunde kunde = null)
{
_kunde = unitOfWork.KundenRepository.Get().First();
if (kunde == null)
_kunde = unitOfWork.KundenRepository.Get().First();
else
_kunde = kunde;
vorname = _kunde.Vorname;
nachname = _kunde.Nachname;

View File

@@ -0,0 +1,44 @@
using KanSan.Base;
using KanSan.Base.Interfaces;
using KanSan.Base.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace KanSan.ViewModel
{
class KundenListViewModel
{
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());
private List<Kunde> kunden;
public List<Kunde> Kunden
{
get
{
return kunden;
}
}
public KundenListViewModel()
{
kunden = unitOfWork.KundenRepository.Get().ToList();
}
public Kunde NeueKunde()
{
Kunde result = new Kunde();
result.GuidNr = Guid.NewGuid();
unitOfWork.KundenRepository.Insert(result);
unitOfWork.Commit();
IEnumerable<Kunde> kunden = unitOfWork.KundenRepository.Get(d => d.GuidNr.Equals(result.GuidNr));
if (kunden.Count() < 1)
throw new Exception("Kunde konnte nicht gefunden werden");
return kunden.First();
}
}
}