Wie behandeln Ausnahme in Wert-Wandler, so dass benutzerdefinierte Fehlermeldung, die angezeigt werden können
Ich habe eine textbox, die gebunden ist, um eine Klasse mit einer Eigenschaft vom Typ Timespan und geschrieben haben, einen Wert converter konvertiert eine Zeichenfolge in TimeSpan.
Wenn eine andere Zahl eingegeben wird, in der textbox, ich möchte eine benutzerdefinierte Fehlermeldung angezeigt werden (anstatt der Standard-input-string ist im falschen format').
Den converter code:
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
try
{
int minutes = System.Convert.ToInt32(value);
return new TimeSpan(0, minutes, 0);
}
catch
{
throw new FormatException("Please enter a number");
}
}
Habe ich 'ValidatesOnExceptions=True' in der XAML-binding.
Habe ich jedoch über die folgenden MSDN-Artikel, der erklärt, warum der oben nicht funktioniert:
"Data binding engine nicht fangen Sie die Ausnahmen, die geworfen werden, die von einem Benutzer gelieferten Konverter. Jede Ausnahme, die ausgelöst wird durch die Convert-Methode, oder alle nicht abgefangene Ausnahmen, die ausgelöst werden, durch Methoden, die die Convert-Methode aufruft, werden behandelt, als run-time-Fehler"
Ich habe gelesen, dass 'ValidatesOnExceptions fängt Ausnahmen in TypeConverters, also meine konkreten Fragen sind:
- Als würde Sie ein TypeConverter über einen ValueConverter
- Vorausgesetzt, ein TypeConverter ist nicht die Antwort auf die Frage oben, wie kann ich meine benutzerdefinierte Fehlermeldung in der Benutzeroberfläche
InformationsquelleAutor der Frage sturdytree | 2011-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich mit einem
Gültigkeitsregel
für dass auf diese Weise die Konverter können sicher sein, dass die Umwandlung funktioniert, da er nur aufgerufen wird, wenn die Validierung erfolgreich ist, und Sie können die angefügte EigenschaftValidierung.Fehler
enthalten wird, die Fehler IhrerValidationRule
erstellt, wenn der Eingang ist nicht so, wie Sie es wollen.z.B. (Hinweis: der tooltip Bindung)
InformationsquelleAutor der Antwort H.B.
Ich verwendet, Validierung und Konverter zu akzeptieren
null
und zahlenXAML:
Code Hinter:
ValidationRule :
Konverter :
InformationsquelleAutor der Antwort Muhammad Alaa
Sollten Sie nicht throw Ausnahmen vom Konverter. Ich würde IDataErrorInfo implementieren und umzusetzen, die Fehler und String. Bitte überprüfen Sie http://www.codegod.biz/WebAppCodeGod/WPF-IDataErrorInfo-and-Databinding-AID416.aspx.
HTH daniell
InformationsquelleAutor der Antwort daniell