Mark Kors ce63f9bff9 Implementeer ICommand patroon met RelayCommand voor MVVM
- Voeg RelayCommand class toe voor herbruikbare ICommand implementatie
- Vervang button click event handler door AddProductCommand in MainViewModel
- Update XAML om Command binding te gebruiken in plaats van Click event
- Verwijder business logic uit code-behind (MainWindow.xaml.cs)
- Los DataContext duplicatie op (was twee keer MainViewModel instantie)

Dit maakt de applicatie beter testbaar en volgt proper MVVM principes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 19:11:54 +01:00
2025-11-12 15:16:52 +01:00
2025-11-12 15:16:52 +01:00
2025-11-12 15:16:52 +01:00
2025-11-12 15:16:52 +01:00
2025-11-12 15:16:52 +01:00
2025-11-12 15:16:52 +01:00

MVVM_DEMO

Een demonstratieproject dat het Model-View-ViewModel (MVVM) ontwerppatroon illustreert in een WPF (Windows Presentation Foundation) applicatie.

Overzicht

Dit project demonstreert de implementatie van het MVVM-patroon in een WPF-applicatie met een eenvoudige productenbeheer interface. De applicatie toont hoe data binding, observable collections en property change notifications werken binnen het MVVM-framework.

Technologie Stack

  • .NET 8.0 - Target framework
  • WPF (Windows Presentation Foundation) - UI framework
  • C# - Programmeertaal
  • XAML - Markup language voor UI

Projectstructuur

MVVM_DEMO/
├── Models/
│   └── Product.cs              # Product data model
├── ViewModels/
│   └── MainViewModel.cs        # Hoofd ViewModel met business logica
├── Views/
│   └── MainWindow.xaml         # Hoofd UI window
│   └── MainWindow.xaml.cs      # Code-behind voor UI events
├── ValueConverters/            # (Gereserveerd voor toekomstige converters)
├── App.xaml                    # Application configuratie
└── MVVM_DEMO.csproj           # Project configuratie

Functionaliteit

De applicatie biedt de volgende functionaliteit:

  1. Productenlijst weergeven: Een ComboBox toont alle beschikbare producten
  2. Product details bekijken: Bij selectie worden de naam en prijs van het product getoond
  3. Product toevoegen: Via een knop kunnen nieuwe producten met willekeurige prijzen worden toegevoegd
  4. Data Binding: Automatische synchronisatie tussen UI en ViewModel

MVVM Patroon Implementatie

Model (Models/Product.cs)

Bevat de data structuur voor een Product met eigenschappen:

  • ProductName (string)
  • Price (double)

View (Views/MainWindow.xaml)

De gebruikersinterface met:

  • ComboBox voor productselectie
  • TextBoxes voor het weergeven van productdetails
  • Button om nieuwe producten toe te voegen

ViewModel (ViewModels/MainViewModel.cs)

Implementeert INotifyPropertyChanged en beheert:

  • ObservableCollection<Product> voor de productenlijst
  • Property change notifications
  • Data initialisatie via LoadData()

Hoe te gebruiken

Vereisten

  • Visual Studio 2022 of hoger
  • .NET 8.0 SDK geïnstalleerd

Project uitvoeren

  1. Clone of download dit repository
  2. Open MVVM_DEMO.sln in Visual Studio
  3. Druk op F5 of klik op "Start" om de applicatie te bouwen en uit te voeren

Functionaliteiten testen

  1. Producten bekijken: Selecteer een product uit de dropdown
  2. Details bekijken: De naam en prijs verschijnen automatisch in de tekstvelden
  3. Product toevoegen: Klik op "Add Product" om een nieuw product toe te voegen met een willekeurige prijs tussen 10 en 100

Belangrijke Concepten

Data Binding

De applicatie gebruikt WPF data binding om de UI automatisch te synchroniseren met het ViewModel:

<ComboBox ItemsSource="{Binding Products}" />
<TextBox Text="{Binding productName}" />

INotifyPropertyChanged

Het ViewModel implementeert INotifyPropertyChanged om de UI te notificeren wanneer data wijzigt:

public void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

ObservableCollection

Gebruikt voor de productenlijst om automatisch UI updates te triggeren bij toevoegen/verwijderen van items.

Toekomstige Uitbreidingen

Mogelijke verbeteringen voor dit demo project:

  • Implementatie van ICommand voor button clicks (in plaats van code-behind events)
  • Toevoegen van ValueConverters voor data formatting
  • CRUD operaties (Create, Read, Update, Delete)
  • Data persistentie (database of file storage)
  • Input validatie
  • Unit tests voor ViewModels

Licentie

Dit is een educatief demo project.

Description
Eenvoudige MVVM demo met WPF en C#
Readme 38 KiB
Languages
C# 100%