Entwickler-Ecke
WPF / Silverlight - INotifyDataErrorInfo
RobAll - Fr 15.10.21 20:27
Titel: INotifyDataErrorInfo
Guten Abend,
bei einer WPF Textbox validiere ich eine Laufzeit in Tagen als Integer.
ValidationLaufzeit größer, kleiner die Error Meldungen werden bereitgestellt, und ich kann im ViewModel mit
HasError und
CanExecute die Fehler managen.
Nun gebe ich aus Versehen einen String ein.
Meldung: |
der Wert xxx konnte nicht konvertiert werden |
um das Textfeld wird ein roter Rahmen angezeigt.
Ich benötige den ERROR jetzt im View Model für den
CanExecute im
HasError, dieser wird aber nicht durchgereicht.
Wie kann ich das Problem lösen?
Habt ihr da eine Lösung?
Danke vorab
Viele Grüße
RobAll
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <TextBox Grid.Row="3" Grid.Column="1" Name ="Laufzeit" Validation.ErrorTemplate="{StaticResource ValidationTemplate}"> <Binding Path="Laufzeit" UpdateSourceTrigger="PropertyChanged" > <Binding.ValidationRules> <NotifyDataErrorValidationRule/> </Binding.ValidationRules> </Binding> </TextBox> |
Moderiert von Th69: C#-Tags hinzugefügt
Moderiert von Th69: Quote-Tags hinzugefügt
Moderiert von Th69: XML-Tags hinzugefügt
RobAll - Sa 16.10.21 10:22
Hallo Th69,
ich habe genau dieses Beispiel aus deinem Link verwendet :D
"ValidationLaufzeit größer, kleiner die Error Meldungen werden bereitgestellt"
Problem im Datenfeld Integer "Restlaufzeit"
Die Validierung funktioniert einwandfrei im Datentyp Integer,
Nur wenn ich dort "aus versehen" einen String eingebe bekomme ich den Error =>
"der Wert xxx konnte nicht konvertiert werden"
weil ein Integer als Eingabewert erwartet wird.
Im ViewModel wird der Has Error nicht getriggert, weil der Fehler vorher schon in der View abgefangen wird.
Ich benötige den Has Error im ViewModel für einen CanExecute Command.
Da bräuchte ich einen Lösungsansatz.
Danke vorab
RobAll - Sa 16.10.21 12:10
Bei der Datenfeld Validierung eines Integers funktioniert
INotifyDataErrorInfo einwandfrei.
C#-Quelltext
1: 2:
| if (Laufzeit < 7 || Laufzeit > 365) AddError(nameof(Laufzeit), "Fehler..."); |
Zitat: |
Du meinst, der Fehler wird nicht an deine INotifyDataErrorInfo-Implementierung weitergereicht?
Dann schau mal in meinen 2. Link unter "Type Conversion" bzgl. Validation.Error. |
Richtig.
Th69 - Sa 16.10.21 12:43
Zur Erklärung: Wenn die Benutzereingabe nicht in den passenden Datentyp (bei dir jetzt z.B. int) umgewandelt werden kann, so kann ja auch nicht die Eigenschaft gesetzt werden und somit muß dieser Fehler anders behandelt werden.
Möchtest du das trotzdem direkt behandeln, so müßtest du stattdessen eine String-Eigenschaft verwenden und die passende Umwandlung selber in deinem ViewModel vornehmen.
PS: Jetzt habe ich zumindestens den Sinn deines Satzes verstanden - auch wenn dieser immer noch Murks ist...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!