WPF
Recently I started to work on a new project in our company that is using WPF technology. As a web developer with almost no experience with desktop applications I find it interesting and challenging at the same time (statefull environment, no need in intermediate DTO objects, rich UI support, XAML abilities that are beyond regular markup capabilities, etc). Yet there are many questions that have an answer, but feel very weird. A few of those for example
- I have a domain object Client. When binding its' properties, I have to implement INotifyPropertyChanged and "pollute" the code with Notifications for UI. When a property is calculated (getter only), another property has to do the notification, which may end up in cascading notification. As a result of this, the responsibility of a Client now also includes UI notification responsibilities. Feels wrong.
- XAML - expressing if not everything, but 99% in XAML is cool, but this brings the question of concerns as well. Should bindings be determined in code and not markup? It's easier and faster to refactor code, rather than markup.
- VS.NET support for XAML - well, if not R#, I honestly would not manage to do a lot. SP1 does help, but R# is still pulling off a lot more. Seems like IDE is not ready for the XAML yet. Blend 2.5 is an option, but just the designer, which makes code development a bit challenged.
- Resources - there are lots of them, and at the same time not many that are nicely arranged/grouped/catalogued. I loved Prism for WPF - structured, unified, dealing with real-life applications issues. Also connects between WPF and other things no project can exist without.
- Updated: Controls support - No DatePicker or Calendar control. There's a lot of attempts to provide a substitute, but IMO MS should care for that as a part of the bandle. TabControl - a bug with validation and switching tabs (validation is not happening). For a control like tabs, this is a bit sloppy.
For myself, I think I need to dig dipper to understand the core concepts and principles of WPF/XAML. The implementation details will be less significant if I grasp the concepts first (as always). You are welcome to share your opinions or advices in terms of where to dig first.