- 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>
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:
- Productenlijst weergeven: Een ComboBox toont alle beschikbare producten
- Product details bekijken: Bij selectie worden de naam en prijs van het product getoond
- Product toevoegen: Via een knop kunnen nieuwe producten met willekeurige prijzen worden toegevoegd
- 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
- Clone of download dit repository
- Open
MVVM_DEMO.slnin Visual Studio - Druk op F5 of klik op "Start" om de applicatie te bouwen en uit te voeren
Functionaliteiten testen
- Producten bekijken: Selecteer een product uit de dropdown
- Details bekijken: De naam en prijs verschijnen automatisch in de tekstvelden
- 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.