Where do I begin? :)
- No MultiBinding
- No ElementName= binding
- TemplateBinding can only refer to direct properties, not attached DP's
- No RelativeSource binding
- No binding to child properties - e.g,
{Binding Path=Foo.Bar[0].Baz}
- No ability to subscribe to changed events on any arbitrary dependency property - the class author has to explicitly define an event (and in most cases, only one or two properties in SL controls actually do)
- The Visual State Manager requires the control author to know all style-able states when the control is written, which completely breaks the "extension through styles/templates, not inheritance" story that WPF promotes
- No Adorners
- No Navigation
- No dependency property inheritance
- No/sucky support for external ResourceDictionaries/merged dictionaries
- Validation story sucks (it's only marginally better in WPF)
- Printing
is not supported
On top of that a number of method signatures changed for no good reason. E.g., IIRC, the overloads for Dispatcher.Invoke are different, instead of SL just ignoring the parameters it can't yet handle. Or as another example, ObservableCollection in WPF can raise Add, Remove, Replace and Move events - in SL it's only the first three.
Since I write code to work on both platforms, the code ends up being littered in strategy patterns and #ifdefs. Feels like C++ all over again :-)