Erlaubt nur numerische Eingabe in WPF-TextBox
Werde ich gerne validieren Benutzer-Eintrag, um sicherzustellen, dass Sie ganze zahlen sind. Wie kann ich es tun? Ich dachte, der Verwendung von IDataErrorInfo
scheint, wie die "richtige" Weise zu tun, die Validierung in WPF. Also habe ich versucht, es umzusetzen, in meinem ViewModel.
Aber die Sache ist mein Textfeld ist gebunden an ein integer-Feld, und es gibt keine Notwendigkeit, um zu überprüfen, ob eine int
ist ein int
. Ich bemerkte, dass WPF fügt automatisch einen roten Rahmen um die textbox zu Benachrichtigen den Benutzer über den Fehler. Die zugrunde liegende Eigenschaft nicht ändern, die einen ungültigen Wert. Aber ich möchte den Benutzer Benachrichtigen, der diese. Wie kann ich es tun?
InformationsquelleAutor Jiew Meng | 2010-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den roten Rand, den Sie gesehen haben ist eigentlich ein ValidationTemplate, die können Sie erweitern und fügen Sie eine info für die user. Siehe dieses Beispiel:
InformationsquelleAutor Andrei Pana
Ein anderer Weg ist, einfach nicht zulassen, dass Werte, die nicht zahlen.
Die folgende Implementierung ist ein bisschen sucky, und ich würde gerne Abstrakt und es später auf, damit es mehr wiederverwendbar, aber hier ist was ich getan habe:
in der code-behind meiner Ansicht nach (ich weiß, das ist vielleicht verletzt, wenn Sie ein hardcore-mvvm ;o) )
Ich definierte die folgenden Funktionen :
Und in der XAML-Ansicht, jedes Textfeld, das wurde eigentlich nur akzeptieren Ganzzahlen
wurde wie folgt definiert:
Den Schlüssel-Attribut wird PreviewTextInput
kürzen Sie diesen Weg auch später?
IsTextNumeric gibt true zurück, für die nicht numerischen text. Eine besser lesbare Lösung wäre die änderung der regex [0-9] und der Menge e ist.Behandelt = !IsTextNumeric, so wird das Ereignis blubbert, wenn der text ist numerisch. Oder ändern Sie den Namen der Methode zu IsTextNotNumeric 🙂
stackoverflow.com/a/1268648/419348 Es führt die gleiche Methode. Darüber hinaus verhindert das einfügen falscher Daten.
InformationsquelleAutor Magnus Gudmundsson
Können wir tun, Validierung auf Textfeld geändert-Ereignis.
Die folgende Implementierung wird verhindert, dass die Tastendruck-Eingabe andere als mit Ziffern und einem Dezimalpunkt.
Wirklich hilfreich ist.
InformationsquelleAutor kumar Gouraw
wenn Sie in der WPF Besser PreviewTextInput Veranstaltung, die die Unterstützung aller Plattformen und von presentationcore.dll
hier ist das Beispiel:
InformationsquelleAutor Gaurav Panwar