From 0807a896b71e7925c217f26868e16fef23e25658 Mon Sep 17 00:00:00 2001 From: luevard Date: Sun, 22 Oct 2023 17:40:43 +0200 Subject: [PATCH] =?UTF-8?q?:sparkles=20d=C3=A9but=20de=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) 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