WPF Data Validation - Exception, IDataErrorInfo, ValidationRule, & Annotations
Вставка
- Опубліковано 26 лип 2024
- In this video we cover creating dat validation in multiples of ways. 1) By throwing an exception, 2) By using the IDataErrorInfo interface, 3)By using custom ValidationRule base class, and 4) By using the System.ComponentModel.Annotations.
I was going to break this video in to multiple parts, but decided to keep it as one video. I advise taking a break half way through if you have a short attention span like me ;)
Link the the GitHub project - github.com/Tosker/ValidationI...
** Tip Jar **
Paypal: toskerscorner@outlook.com
BTC: 3DkvwvcQ8Vt2U84jdtEhNBx2Ueai3Xttmu
ETH: 0xFf79A145e1ED6F538607Ec374968e605cbea758b
BCH: qqpgrnzuhc5hav4e79m8nfhmugs46jtl0ujxcu0tj5
LTC: MHXQmJA3hkwTPeArB9QPNkcLiHQx723yMb
well done. Simple, short, clear. No fuss, no wasting time. Tip to the point. And also your english is understandable.
Great explanation and with different implementations - I've ended up using
a combination of these to fit the needs of my view. Thanks for taking time to put these videos together.
Really good video, it helps a lot, thank you.
Finally found a good video on validation. Thank you
Great explanation! Thank you so much.
BTW: Thanks for the Ctrl+. tip. I knew it was possible but I didn't know the combination.
Great Video... I like the annotation because it is like what I use in MVC. Thank you!
Great explanation! Thank you so much.
annotation more simple & clean I think.. good video .. Thanks
Thank you very much for all your video series
many thanks for your valuable tutorial
Thank you very much, this is very educative
Great Explanation !
10:09 I think binding the tooltip directly with the dictionary will throw an exception when there is no error on the property - you only show when there are errors.
Ps: There is also another interface for validation INotifyOnDataErrroInfo which I think is also very powerful
Really nice. I'm learning a lot from you. Keep going, you have a valuable content here.
14:02 If you wanna property validates on start need set ValidationRule property ValidatesOnTargetUpdate="True". In this case 13:50 need write:
Excelent video!!!! thanks
very helpful. Thanks
Thanks much for your tutorials. We need more and more from you :)
How was the video quality? I just recently realized I had been recording with a downscale to 720p, so in this video I changed to 1080p. Not sure if the extra file size is worth it or not.
ToskersCorner video quality is nice. However getting 720p only
I prefer the IDataErrorInfo interface, but an issue in all cases is if you have a Textbox backed by a numeric property with a OneWayToSource binding and the user enters an invalid string. It's not easy to communicate that back to the ViewModel in a Command's CanExecute handler for example. What I did was make a custom ValueConverter that TryParses the string to an int or -1 if error and treat -1 as an invalid value.
How would you implement a default validation when using the IDataErrorInfo interface? I would like to avoid a giant switch statement.
How can i set the MinimumCharacters field from source code (the value is 5 in the 14:29 picture in the video). I want to set the rule's value from a value what was read out from an xml file at startup.
I can't solve this huge problem, and it is quite urgent for me.
Thanks in advance.
Using the IDataErrorInfo approach together with an ErrorTemplate with seems to work. Am I right that ErrorCollection won't be necessary in this case?
Nice video.
I have a little question when I tried the ValidationByDataAnnotation method, Unable to cast object of type 'System.Int32' to type 'System.Array' gave me this error, what have I done wrong?
Are you able to demo the validation being triggered by a button press....
which one is best performance wise?
very cool but how can we bind error collection in ex2 to the error template in ex3?
Is there any possibility to also bind button enable/disable status with textblock changing?
any way to manage ( *value could not be converted* ) Error message ? that is fired by ( idataErrorinfo )
How can I display the error message in the textbox when using exceptions?
Why my OnPropertyChanged got error at IDataErrorInfo?Please help!
How would you get access to a validation errors in example 3 in your viewmodel?
Can you timestamp that spot to which you are referring?
@@ToskersCorner I think he means example 3 which starts at 10:39 - The minimum character rule.
Is it possible to disable/enable Submit button based on these validation errors?
Try using a multivalue converter for multiple input fields and then handling the logic inside of the converter.
ErrorCollection will keep old messages. Where do you clear the collection?
I firstly thought so aswell. But everytime that "name" validates successfully (i.e. result == null after value of name get checked) we still assign result ( = null ) to ErrorCollection[name], therefore resetting its error message.
How to do it in the combo box??
just thinking. how to clear TextBox After submitting.
Well the simple way of doing it would be to set the TextBox.Text property to empty in your submit Click Event. Something like this:
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
txbUsername.Text = "";
}