Geeks With Blogs
Josh Reuben
 
Merge Wpf and Silverlight to single framework
·        Merge both frameworks to use the same assemblies and controls (with optional functionality in separate assemblies) make a .net silverlight profile that would be a subset of .net client profile and used by partially trusted xaps.
·        Conditional compilation within Xaml - stopgap solution:  for Silverlight/WPF differences in shared markup.
·        Support the direct hosting of Silverlight – stopgap solution: support the direct hosting of Silverlight in a WPF application
XAML
·        XAML 2009
·        XAML compile time syntax checking
·        XAML code refactoring (e.g. property renames) - e.g. Create Style from Element, convert to userControl
·        in-place editing of xaml tags
·        XAML Debugging  - set breakpoints, step over/into XAML, examine triggers , bindings, resource accessors
·        Visual Inheritance - To be able to inherit from a base usercontrol or page and be able to add to or alter the xaml from the base control, with the designer providing full support for this. Hard.
·        Templatable MetaTemplates - More succinct and compact templates – e.g. for VSM
·        Reduce XAML verbosity - A lot of things that can't be done using markup extensions require a tremendous amount of disgusting XAML. Some things could be as simple as applying the ContentProperty attribute intelligently. For example, why do I need to specify Setter.Value? Setter's default content property should already be its Value property. Same with DataGrid.Columns. DataForm is an improvement in Silverlight but still not perfect. A simple label/field layout should be a first class use case in XAML.
·        Compile Xaml and source files to BAML files from csc  - Compile BAML files for use in tools like XamlCruncher and Kaxaml
Properties
·        Notifiable properties - rather than requiring explicit INotifyPropertyChanged, Something more like:
public Notify<int> Foo { get; set; }
·        First class, generic Dependency properties + first class observable events (IObservable) - WPF's property and event systems were constructed without generics - terrible snippets required for DPs.
·        Lazy initialization of dependency properties - Currently there's no easy way to initialize a dependency property lazily. This is a real issue for collection DPs, because they have to be explicitly created in XAML. I want to be able to specify a "InitCallback" delegate in the property metadata
 
MVVM Support
·        MVVM Solution template constraints  - Force no-code view data templates à the IDE helps us fall into the pit of MVVM success.
·        DispatcherCollection - Automatically handle thread dispatching when binding to ObservableCollection.
·        Add designer attribute in Xaml for DataContext type  - to specify an x:Type for the designer to use when dealing with a DataContext, for use with DataTemplates and ViewModel-first MVVM. This would potentially allow intellisense to work when using VM-first style MVVM development.
·        multi-selection support in ListCollectionView - A ListCollectionView keeps a "SelectedItem" to track selected item in a collection, it would be really nice to extend it so it also has a "SelectedItems"-observablecollection that tracks more than one 1 item.
 
Improve WPF 3D
·        high level 3D elements in xaml – NURBS curve patch based primitives
·        Directly host XNA
·        Wireframes - 3D Lines. A first-class implementation better than ScreenSpaceLines3D – for Scientific visualization.
·        D3DImage support for DX11 - Current, D3DImage only supports DX9/DX9Ex surfaces. (D3DResourceType only allows for IDirect3DSurface9.)
·        D3DImage performance optimizations - D3DImage is very fast, but it could be faster. The current implementation eats up a good chunk of CPU time, not just GPU time when adding a dirty rect. This may have to do with the flushing of the D3DDevice
 
Support WPF functionality in Silverlight
·        3D
·        DataTriggers
·        Adorners
·        Binary Serialization Libraries - support saving objects and states of objects in Isolated storage without having to write custom code.
·        VisualBrush
·        MarkupExtensions
·        Multibinding
·        ObjectDataProvider
·        Freezable
·         DataContextChanged event – instead of workarounds like MyDataContext Dependency Property: http://msmvps.com/blogs/theproblemsolver/archive/2008/12...
·        PropertyMetadata CoerceValueCallback, - DependencyProperty.RegisterReadOnly
·        TPL
·        Full databinding support  - 1. Binding of non-framework elements. (properties of Behaviors and Triggers), 2. Binding of style setter, 3. Ancestor relative source binding, 4. x:Type x:Static
·        FlowDocument control - with Select+Copy support. Stopgap solution:  Select and copy text from TextBlock elements, enabling texblocks to act like labels and/or HTML-like paragraphs ...
·        Vector printing - Silverlight 4 prints by rasterizing the content to bitmap and sending this bitmap to printer - print jobs are huge. need implement proper vector printing like WPF
·        Support displaying GIF images
·        Allow the HTML control to be used in browser
Support Silverlight functionality in WPF
·        DeepZoom / MultiScaleImage
·        Bing Maps
·        Pivot
·         WCF RIA Services
·        Webcam/Mic API
·        Silveright Toolkit Controls - especially the DataForm
·        LayoutStates - Animating items insertion and removal
·        CompositeTransform
 
New Functionality / Extensibility
·        Roll Blend SDK Behaviors and TriggerActions into the .NET framework  - Remove the dependency on the custom Blend assembly and add Visual Studio support
·        Improve multi language support - There are new ideas introduced in WPF with x:Uid in XAML and locbaml command line tool but the translation process is a mess, see http://wpflocalization.codeplex.com /  . There should also be a standalone resource editor available for translators. LocBaml is realy painfull. A better solution is needed
·        Custom brushes – PathGradientBrush, StrokeGradient Brush: http://www.charlespetzold.com/blog/2009/02/Graphical-Paths-with-Gradient-Colors.html
·        IMarkupExtension - Make MarkupExtension an interface so classes can be DependencyObjects with Attached Properties
·        native support for multiple monitors - For something as basic as trying to take inventory of the number of screens available, I still have to include a reference to Windows Forms to get information from SystemInformation.MonitorCount and Screen.AllScreens[i].WorkingArea.
·        Unseal Binding  - Binding and BindingBase  - create a custom Binding that is aware of a custom Validation system. For an example of how it could be used, see http://www.clariusconsulting.net/blogs/kzu/archive/2007/09/23/ForgetaboutextendingWPFdatabindingsupport.aspx
·        Allow Binding to ConvertParameter
 
Styles
·        Style multiple inheritance - Currently you can only set a Style's BasedOn to one other style (Without a custom markup extension). This should be changed to be a like CSS and allow multiple inheritance.  A warning during compilation about conflicting styles would work great here. To aid this feature, style's BasedOn should also support DynamicResources so that not all styles have to be local.
·        Extend implicit styles to work for all x:Class roots, like Windows  - Currently, If you supply a TargetType, all instances of that type will have the style applied. However derived types will not.  <Style TargetType="{x:Type Window}"> will not work for all your custom derivations/windows. <Style TargetType="{x:Type local:MyWindow}"> will apply to only MyWindow
 
New Controls
·        Timeline – like Infragistics, but bindable
·        Reporting controls
·        Time picker
·        Native WPF Webbrowser Control - The current Webbrowser in WPF is only a wrapper around the IE WebBrowser Control. It would be great to have a native WPF Webbrowser Control.
·        PropertyGrid control - currently only available as a WinForm control.
·        include DockingManager, Windows selector and most of the VStudio goodies in standard WPF feature set - Share some of excellent VS 2010 UI blocks (Docking manager, Windowss selector maybe Architecture Explorer like a graphing helper)
thus saving time for good people for more high-level tasks and stop overflow of VS-imitating low-quality 3rd party libraries
Shaders
·        Add GlowEffect and Multipass Shaders - Hard to fake inner Glow effect right now. Multipass Shaders would allow to implement those effects yourself.
·        vertex shaders
·        XAML Based Shaders - create HLSL directly in XAML.
Performance
·        Immediate Mode Graphics Support - Direct2D markup abstraction for data-driven visualization apps. The current alternative of using WriteableBitmap requires synchronizing bitmap updates with WPF's rendering cycle.
·        Faster geometry rendering - When we need to visualize very detailed vector graphics wpf is pretty useless. Even the basic transformations, such as pan/zoom take a lot of time (using RenderTransform or GeometryTransform).
·        Multithreaded Panels - Sometimes you want a part of the UI to update seamlessly in parallel to what the rest of the UI thread is doing. The only way to achieve this right now is to have a topmost window running on a different thread. It would be great if there was a Panel Control that could run in a separate thread instead
 
Silverlight OOB and local storage
·        Minimize To SysTray in OOB - the ability of making SL app look like a resident app.
·        ClickOnce like experience - Greater control over Installation in OOB – options to Uninstall and launch
·        Launch an OOB app if it's installed (would allow for developing an experience similar to click-once)
·        Sync Framework support for client side data in Isolated storage - to have local cached data and synchronize it via Sync Framework
·        Local database support (SQL Server Compact, SQLite) - Provide local SQL database with Silverlight OOB (so it could be used without stepping out of the sandbox)
·        Make FileInfo class serializable - local files (selected using the FileOpenDialog), store the references to IsolatedStorage and later, get back the references to proceed to the upload (typically because we need to display some HTML page between to selection step and the upload step, so the Silverlight module is unloaded and FileInfo objects are lost).
 
MPEG / JPEG encoder / decoder + streaming
·        Encoding and streaming to Media Server / IIS - To make some use for the webcam/mic support in Silverlight 4, some video/audio encoders should be built in (for example Windows Media or h264/AAC). Also there should be built in support for streaming audio/video to either a Windows Media server or to IIS using live smooth streaming.
·        Native support for video capture and video streaming. - Currently you have to jump through a lot of hoops to get this running via DirectShow interop or MediaPlayer ActiveX.
·        Currently, the only way to get the pixels of an image is to load it in a BitmapImage and use the Writeable bitmap. But this has to be done on UI thread. This is restrictive because we cannot load and manipulate image(s) in a background thread before creating the final BitmapSource. The worst case is when we want to load a big image from the IsolatedStorage, we have to use the SetSource method, which will block the UI thread for a long time. A solution would be to have a JPEG decoder class which simply receive a Stream as input parameter and return the Pixel array, as well as the Width and Height of the decoded image.
·        Currently it is not possible to generate a bitmap image (using WriteableBitmap) and send the rendered image to a server (or write it in the IsolatedStorage). We have to rely on some 3rd-party library to encode the image. A solution would be to have a JPEG encoder class which simply receive a Pixel array, the width and the height of the image, and return a stream object of the encoded image. This class should allow background processing (ie, can execute on a background thread, not the UI thread)
Silverlight networking enhancements
·        Support for WCF wsHttpBinding + wsDualHttpBinding
·        Streaming support for HttpWebRequest - When executing a file upload using HttpWebRequest silverlight prepares the whole response stream on the client before it is passed to the communication stack. Uploading files larger than 100MB is not possible without using error-prone methods like chunking.
·        NetDataContractSerializer  - If WCF for Silverlight had support for NetDataContractSerializer it would be possible to serialize complex object graphs.
Posted on Monday, September 13, 2010 1:06 PM NET 5.0 , XAML | Back to top


Comments on this post: Silverlight 5.0 / WPF 5.0 - not quite there yet!

# re: Silverlight 5.0 / WPF 5.0 - not quite there yet!
Requesting Gravatar...
Completely agree with a lot of your points, In particular around WritableBitmap/BitmapImage/Threading and obviously combining WPF/Silverlight would make both our lives and microsofts lives easier!

Great Post!
Left by Steven Fox on Sep 15, 2010 9:51 AM

# re: Silverlight 5.0 / WPF 5.0 - not quite there yet!
Requesting Gravatar...
I totally agree on this idea. All points have been clearly explained. - Antiquities of California
Left by Lira Sale on Dec 22, 2016 4:43 PM

Your comment:
 (will show your gravatar)


Copyright © JoshReuben | Powered by: GeeksWithBlogs.net