Bonjour à tous.
Je me tourne vers vous puisque le support du revendeur galère à me répondre.
J'ai fait une appli WPF MVVM qui utilise les composants Infragistics.
Mon appli doit avoir des champs que j’appellerais "dynamique" puisque en fonction de la base de données ciblées certains champs peuvent être différents (pas les mêmes noms, pas les mêmes types,...).
Pour pouvoir faire cela, j'ai utilisé l'exemple suivant:
https://www.infragistics.com/communi...of-your-choice
Le concept est que dans le ViewModel, il y a une ObservableCollection de Period (dans cet exemple) qui permet de générer les champs dynamiques.
J'ai juste ajouté l'implémentation de INotifyPropertyChanged dans cette classe Period.
Tout cela est Ok, l'affichage est bon pas de souci.
Dans le setter de la propriété Hour de la class Period, j'ai ajouté un contrôle de validité qui lève une exception si la valeur est incorrecte. Et si cette exception est levée, je veux empêcher l'utilisateur de quitter la cellule et lui afficher le message de l'exception.
Mais, bien que cette exception soit levée, je n'ai rien qui est affichée dans la grille (xamdatagrid).
En parcourant le web et en me renseignant auprès du revendeur j'ai "trouvé" la validation rule ExceptionValidationRule qui intercepte les exceptions des propriétés bindées. Ok, super.
Au moins, j'ai quelque chose qui catch les exceptions levée dans les propriétés.
Le revendeur, me conseille d'utiliser l'évenement EditModeEnding pour traiter l'affichage de message d'erreur et empecher l'utilisateur de quitter la cellule.
Donc, j'implémente cette logique dans cet handler.
Mais, mon souci est que certains champs dynamiques sont affichés en tant que combobox, ou la liste de la combobox est la liste des valeurs autorisées.
Connaissant le client, ce combobox doit être editable, c'est à dire pas uniquement une liste déroulante, parce que ces listes peuvent contenir une multitude de valeur, et s'il faut scroller en bas de la liste, cela va très vite le gonfler.
Mais avec ces combobox, je ne catch pas ces erreurs de validation. J'ai beau tenter dans tous les sens, cela ne veut pas catcher cette exception. Cela laisse donc la ligne avec une valeur invalide.
Est-ce que quelqu'un a déjà fait ce genre de scénario?
Comment est-il arrivé à gérer ce cas?
Si cela n'est pas possible? Je me suis demandé s'il ne serait pas possible d'intercepter l'exception depuis le viewModel contenant cette ObservableCollection<Period>, mais je ne vois pas comment puisque le binding se fait via un indexeur sur la propriétés Periods.
Je vous remercie d'avance.
Partager