Bonjour à tous!
Je cherche désespérément depuis ce matin une réponse à une question qui me parait pourtant simple : comment gérer une exception émise depuis un IValueConverter ?
Prenons un cas concret et très simple :
- Le converteur
- L'utilisation dans le binding :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class GlobalConverter : IValueConverter { object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return System.Convert.ChangeType(value, targetType, culture); } ... }
En considérant que FloatProperty est de type float; et que je saisie "Valeur non float" dans mon textbox. A la perte du focus mon converter émettra l'exception FormatException : Le format de la chaîne d'entrée est incorrect.; ce qui est tout à fait normal. Seulement cette exception a tendance à planter complètement l'exécution de l'application Silverlight...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <UserControl ...> <Grid> <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding FloatProperty, Converter={StaticResource GlobalConverter}, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=true}" /> </Grid> </UserControl>
Mais comment faire, pour mettre le TextBox en erreur, avec le classique encadré rouge et un tooltip qui affiche l'erreur (avec un message compréhensible pour l'utilisation, donc que nous pussions gérer) ?
Merci d'avance pour vos lumières, car hormis une personnalisation du binding lui-même, je ne parviens pas à trouver d'autres solutions techniques!
Partager