My WPF 5.0 Wishlist
Here's a list of things I'd like to see in the next version of WPF:
- Blend's
Behaviors
andTriggerActions
model should be part of the .NET framework, not a custom Blend assembly, and should have VS support - I shouldn't have to declare the same half-dozen
xmlns:abc
entries in every XAML file. An ASPX inspired 'project-wide imports' system would be great. - Ability to replace tags from a namespace, ala ASP.NET TagMapping.
- This should work for markup extensions too - e.g.,
{# Foo}
could become{Binding Path=Foo}
- XBAP's should be able to nicely prompt for full trust elevation. Why does Silverlight get a friendly prompt while XBAP's have to deal with group policy or arcane IE settings? Boggles the mind.
MarkupExtension
should be an interface. Then extensions could beDependencyObjects
and thereby support attached properties.- It shouldn't be so hard to support nested child objects with bindings (without using
ItemsControl
). FrameworkElement.AddLogicalChild
shouldn't be protected, it should be public- Styles simply shouldn't be so verbose. Give us a CSS-like syntax for styles.
ICommands
should have the ability, when executed, to determine whichUIElement
owns the command. Perhaps when event handlers are invoked,CallContext
could be used to store the current UIElement 'sender'.AdornedElementPlaceHolder
shouldn't be so tightly coupled toTemplatedAdorner
. Or, TemplatedAdorner shouldn't beinternal
.- Easier to make attached lazy collections (without the current 'hacks').
- Fix this bug.
- Some kind of pre-unload event. E.g., if an object is removed from an
ObservableCollection
, make it as easy to play anUnloaded
storyboard as it is for aLoaded
storyboard. Perhaps it's specific to the item containers of an ItemsControl. - Make it possible to figure out the XAML URI from a Type. E.g., this should pass:
Assert.AreEqual("/MyAssemb;component/Page1.xaml", GimmeUri(typeof(Page1)))
- Make it possible to set a default style for x:Class root's (e.g., a style for all Window's) - as per this question.
- TriggerBase's constructor shouldn't be public
- Delete everything from
System.Windows.Navigation
, and build a better navigation system.