diff --git a/README.md b/README.md index 4970731..54e17f9 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,53 @@ ## Organisation -- Les pages sont disponibles dans le dossier "Pages". -- Les composants utilisés (ContentView et Popup) dans les pages se trouvent dans le dossier "Pages/Composants". +- Les pages sont disponibles dans le dossier [_**Pages**_]("https://codefirst.iut.uca.fr/git/lucas.evard/PocketBook/src/branch/master/sources/PocketBook/Pages"). +- Les ContentView réutilisé dans les pages se trouvent dans le dossier [_**Composants/ContentView**_]("https://codefirst.iut.uca.fr/git/lucas.evard/PocketBook/src/branch/master/sources/PocketBook/Pages/Composants/ContentView"). +- Les VM applicatives sont à l'intérieur du projet MAUI, dans le dossier [_**Applicative_VM**_]("https://codefirst.iut.uca.fr/git/lucas.evard/PocketBook/src/branch/master/sources/PocketBook/Applicative_VM"). +- Les VM wrappant les classes du modèle sont présent dans une bibliothèque de classes externe au projet MAUI, dans le dossier [_**ViewModel**_]("https://codefirst.iut.uca.fr/git/lucas.evard/PocketBook/src/branch/master/sources/ViewModel"). + +## Mon toolkit MVVM + +Un toolkit MVVM a été mis en place afin de soulager les écritures redondantes pour wrapper le modèle et pour la gestion des modification de propriétés. + +classDiagram + +class RelayCommand { + +execute: Action + +canExecute: Func + -CanExecuteChanged: EventHandler? + +RelayCommand(execute: Action, canExecute: Func) + +CanExecute(parameter: object?): bool + +Execute(parameter: object?): void +} + +class RelayCommand { + -baseRelayCommand: RelayCommand + +RelayCommand(execute: Action, canExecute: Func) + +Execute(): async Task +} + +class ObservableObject { + +PropertyChanged: PropertyChangedEventHandler? + +OnPropertyChanged(propertyName: string): void + +SetProperty(ref member: T, value: T, propertyName: string): void + +SetProperty(member: T, value: T, action: Action, propertyName: string): void +} + +class BaseViewModel { + +Model: TModel + -model: TModel + +BaseViewModel(model: TModel) + +BaseViewModel() +} + +class BaseViewModel { +} + +RelayCommand <|-- RelayCommand +ObservableObject <|-- BaseViewModel +BaseViewModel <|-- BaseViewModel -## Ce qui fonctionne - Navigation - La plupart des pages