0
WPF Input Validation<br />presented by<br />Jonathan Birkholz<br />
About Me<br />Blogs : <br />theabsentmindedcoder.com<br />wizardsofsmart.net<br />Twitter : RookieOne<br />GitHub : github...
Virtual Brown Bags<br />What : Virtual Brown Bags<br />An online meeting where the attendees share:<br />Tips and tricks<b...
EPS Consulting<br />Custom Software Development<br />Consulting / Mentoring<br />Training<br />WPF<br />.NET<br />CODE Mag...
If you know all this… then feel free to leave<br />How to do binding validation with:<br />Validation Rules<br />Exception...
Objective<br />Not to tell you how to do input validation with WPF <br />Instead just show you a variety of methods availa...
Sample<br />App to create a list of party invitees<br />Rules for being an Invitee<br />Name is required<br />Age has to b...
Using Validation Rules<br />
Validation Rules<br />Validation Rules are the mechanism built into data binding with WPF<br />
Binding – Markup Extension<br />Normally you see binding as<br />but that is just a binding markup extension.<br />We can ...
Add Validation Rules to Binding<br />Binding needs to Validate on Data Error<br />Allows the setting of Validation Rules t...
What Validation Rules come with WPF<br /><ul><li>DataErrorValidationRule
ExceptionValidationRule</li></li></ul><li>Custom Validation Rules<br />Just inherit from Validation Rule<br />And override...
Implement Validate and return ValidationResult<br />Fail<br />Pass<br />Validation Error Message<br />
Required<br />
Greater Than<br />
Regular Expression<br />
Displaying the Errors<br />
Error Template<br />Creates the red border<br />
Displaying Error Message<br />This is setting the error template we specified<br />This trigger sets the tooltip to the er...
Tooltip Conflicts<br />Now my normal tooltip shows<br />Now I loss my Error Message tooltip<br />This is due to how Proper...
Using Exceptions<br />
On source…<br />Throw exception<br />
On binding…<br />Set ValidatesOnExceptions to True<br />
Exception Messages<br />Hmm… not exactly the error message we would want…<br />And this message is lame…<br />
Using IDataErrorinfo<br />
Implement<br />
On base ViewModel<br />
On Party Invitee View Model<br />
On Binding<br />Validates On Data Errors<br />
Works great right?<br />Not quite so perfect….<br />Bad input… no error<br />
Solution<br />Make Age a string<br />Change Error Checking<br />
And now…<br />
Enterprise Library <br />
Enterprise Library is<br />The Microsoft Enterprise Library is a collection of application blocks designed to assist devel...
You can get EntLib 4.1 here<br />http://msdn.microsoft.com/en-us/library/dd203099.aspx<br />
Add Reference<br />
Use Validation Attributes<br />
Error Provider<br />Martin Bennedik @<br />http://www.bennedik.de/2007/04/wpf-integration-for-validation.html<br />Downloa...
On View<br />Wrap bindings to validate with the Error Provider<br />Bindings can remain simple<br />
In action<br />Not exactly the best out of the box messages…<br />
Setting the Error Message<br />
New and improved<br />
Custom markup extension<br />
Markup Extensions<br />The most common markup extensions used in WPF programming are those that support resource reference...
Custom Markup Extensions<br />We can make our own markup extensions<br />Use attribute to specify markup extension return ...
Binding Decorator Base<br />Philip Sumi @<br />http://www.hardcodet.net/2008/04/wpf-custom-binding-class<br />
Base Validation Binding<br />
Required<br />Implementation<br />Xaml<br />
Greater Than<br />Implementation<br />Xaml<br />
Email<br />Implementation<br />Xaml<br />
With Custom Markup Extensions<br />
Conclusion<br />We covered how we can do WPF Input Validation with<br />Validation Rules<br />Exceptions<br />IDataErrorIn...
Questions<br />?<br />
Git Hub Repository<br />http://github.com/RookieOne/WPF-Input-Validation<br />Has solution with projects and slide show<br...
References<br />MSDN<br />http://msdn.microsoft.com/en-us/library/dd203099.aspx<br />Blogs and articles by<br />Josh Smith...
Upcoming SlideShare
Loading in...5
×

Wpf Validation

8,604

Published on

Presentation I gave at the Houston TechFest Sept 2009. Covers WPF Input Validation using Validation Rules, Exceptions, IDataErrorInfo, Enterprise Library, and Custom Markup Extensions

Published in: Technology, Design
1 Comment
3 Likes
Statistics
Notes
  • Excellent. Thank you.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
8,604
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
200
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Wpf Validation"

  1. 1. WPF Input Validation<br />presented by<br />Jonathan Birkholz<br />
  2. 2. About Me<br />Blogs : <br />theabsentmindedcoder.com<br />wizardsofsmart.net<br />Twitter : RookieOne<br />GitHub : github.com/RookieOne<br />Email : rookieone@gmail.com<br />
  3. 3. Virtual Brown Bags<br />What : Virtual Brown Bags<br />An online meeting where the attendees share:<br />Tips and tricks<br />Tools, shortcuts, articles, books, patterns, languages, you name it<br />Experiences<br />Things they’ve learned the hard way<br />Frustrations or difficulties<br />Frustrating issues or difficulties they’re facing that somebody else may be able to help them with<br />When : Every Thursday @ 12pm – 1pm<br />Where : http://snipr.com/virtualaltnet <br />Who : Anyone and Everyone<br />
  4. 4. EPS Consulting<br />Custom Software Development<br />Consulting / Mentoring<br />Training<br />WPF<br />.NET<br />CODE Magazine<br />Hiring Developers, PM’s<br />
  5. 5. If you know all this… then feel free to leave<br />How to do binding validation with:<br />Validation Rules<br />Exceptions<br />IDataErrorInfo<br />Enterprise Library - Validation Application Block<br />Markup Extensions<br />
  6. 6. Objective<br />Not to tell you how to do input validation with WPF <br />Instead just show you a variety of methods available<br />In the end, you must decide which methods works best for you<br />
  7. 7. Sample<br />App to create a list of party invitees<br />Rules for being an Invitee<br />Name is required<br />Age has to be greater than 18<br />Must have a valid email address<br />
  8. 8. Using Validation Rules<br />
  9. 9. Validation Rules<br />Validation Rules are the mechanism built into data binding with WPF<br />
  10. 10. Binding – Markup Extension<br />Normally you see binding as<br />but that is just a binding markup extension.<br />We can also set a binding like this<br />
  11. 11. Add Validation Rules to Binding<br />Binding needs to Validate on Data Error<br />Allows the setting of Validation Rules to Binding<br />
  12. 12. What Validation Rules come with WPF<br /><ul><li>DataErrorValidationRule
  13. 13. ExceptionValidationRule</li></li></ul><li>Custom Validation Rules<br />Just inherit from Validation Rule<br />And override Validate method …<br />
  14. 14. Implement Validate and return ValidationResult<br />Fail<br />Pass<br />Validation Error Message<br />
  15. 15. Required<br />
  16. 16. Greater Than<br />
  17. 17. Regular Expression<br />
  18. 18. Displaying the Errors<br />
  19. 19. Error Template<br />Creates the red border<br />
  20. 20. Displaying Error Message<br />This is setting the error template we specified<br />This trigger sets the tooltip to the error message<br />
  21. 21. Tooltip Conflicts<br />Now my normal tooltip shows<br />Now I loss my Error Message tooltip<br />This is due to how Property values are resolved … Styles, Triggers, local, etc<br />
  22. 22. Using Exceptions<br />
  23. 23. On source…<br />Throw exception<br />
  24. 24. On binding…<br />Set ValidatesOnExceptions to True<br />
  25. 25. Exception Messages<br />Hmm… not exactly the error message we would want…<br />And this message is lame…<br />
  26. 26. Using IDataErrorinfo<br />
  27. 27. Implement<br />
  28. 28. On base ViewModel<br />
  29. 29. On Party Invitee View Model<br />
  30. 30. On Binding<br />Validates On Data Errors<br />
  31. 31. Works great right?<br />Not quite so perfect….<br />Bad input… no error<br />
  32. 32. Solution<br />Make Age a string<br />Change Error Checking<br />
  33. 33. And now…<br />
  34. 34. Enterprise Library <br />
  35. 35. Enterprise Library is<br />The Microsoft Enterprise Library is a collection of application blocks designed to assist developers with common enterprise development challenges<br />One of which is the Validation Block<br />
  36. 36. You can get EntLib 4.1 here<br />http://msdn.microsoft.com/en-us/library/dd203099.aspx<br />
  37. 37. Add Reference<br />
  38. 38. Use Validation Attributes<br />
  39. 39. Error Provider<br />Martin Bennedik @<br />http://www.bennedik.de/2007/04/wpf-integration-for-validation.html<br />Download WPF Validation project<br />Has the ErrorProvider control<br />The error provider recursively finds all the bindings down the Logical Tree and adds the Enterprise Validation Rule to the bindings<br />
  40. 40. On View<br />Wrap bindings to validate with the Error Provider<br />Bindings can remain simple<br />
  41. 41. In action<br />Not exactly the best out of the box messages…<br />
  42. 42. Setting the Error Message<br />
  43. 43. New and improved<br />
  44. 44. Custom markup extension<br />
  45. 45. Markup Extensions<br />The most common markup extensions used in WPF programming are those that support resource references (StaticResource and DynamicResource), and those that support data binding (Binding)<br />Static Resource<br />Dynamic Resource<br />Binding<br />
  46. 46. Custom Markup Extensions<br />We can make our own markup extensions<br />Use attribute to specify markup extension return type<br />Inherit from MarkupExtension<br />Implement ProvideValue<br />
  47. 47. Binding Decorator Base<br />Philip Sumi @<br />http://www.hardcodet.net/2008/04/wpf-custom-binding-class<br />
  48. 48. Base Validation Binding<br />
  49. 49. Required<br />Implementation<br />Xaml<br />
  50. 50. Greater Than<br />Implementation<br />Xaml<br />
  51. 51. Email<br />Implementation<br />Xaml<br />
  52. 52. With Custom Markup Extensions<br />
  53. 53. Conclusion<br />We covered how we can do WPF Input Validation with<br />Validation Rules<br />Exceptions<br />IDataErrorInfo<br />Enterprise Library Validation Block<br />Custom Markup Extensions<br />
  54. 54. Questions<br />?<br />
  55. 55. Git Hub Repository<br />http://github.com/RookieOne/WPF-Input-Validation<br />Has solution with projects and slide show<br />Offered as is<br />
  56. 56. References<br />MSDN<br />http://msdn.microsoft.com/en-us/library/dd203099.aspx<br />Blogs and articles by<br />Josh Smith<br />Karl Shifflet<br />Martin Bennedik<br />Philip Sumi<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×