Blend 3 Extensibility
Based on popular customer feedback, we have added a number of new extensibility points in Blend 3 (sorry, no support for plugins, yet, but who needs an officially supported extensibility model anyway? :) )
Over the next few weeks, I will provide more information on these, including interesting use cases that are already starting to pop up. Here is a quick listing of what we currently support:
- Project and item templates: We support the same formats as Visual Studio, with some very minor modifications to suite our user experience. User project and item templates can be copied into C:\users\username\Documents\Expression\Blend 3\ProjectTemplates and \ItemTemplates respectively. We do not support wizards yet.
- The Blend Asset Library
- Ability to register your custom controls. For example, to register a control library Foo.dll, all you need to do is to add the path to the control library as a value of the following registry key - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Expression\Blend\v3.0\Toolbox\Silverlight\v3.0\MyCustomControlLibraryKey. If this were a WPF library, the key you would setup is HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Expression\Blend\v3.0\Toolbox\WPF\v3.5\MyCustomControlLibraryKey
- Adding an asset adds necessary assemblies to your project
- Support for custom control icons
- Setting custom properties on your control when they get instantiated - DefaultInitializer.
- Design surface for custom controls
- Custom context menu commands
- Adorners
- Selection/object manipulation APIs
- Property grid extensibliity - same support as Blend 2, with a few minor additions here and there
Some other notes:
Blend 3 will share the same extensibility model as the next version of Visual Studio.
As we live in a world where there is greater and greater parity between WPF and Silverlight, we wanted the same for these APIs wherein you could use the same design time code to target controls for both platforms. To accomodate this, we had to make some minor breaking changes to the VS 2008 APIs (hopefully the changes will be very straightforward to adapt to) - I will try to post a number of samples to help out with this. By and large, the APIs remain the same as documented here (the documentation will be updated to reflect the breaking changes at a later date).
The APIs are not final yet, and are subject to change. Hopefully, we can keep the changes to a minimum.
Comments
Anonymous
March 25, 2009
It’s been a week since MIX09 started, and since then, many of us Blenders have been busy writing blogAnonymous
April 16, 2009
Unni, Thanks for posting these extensibility points. Couple of questions. Is it possible to provide designers with widgets (f.e. an address widget which will add a set xaml snippet to the page) - we don't want to create usercontrols for these, just give ability to add a chunk of xaml, designers needn't bother about xaml code. They will be able to add it like a custom control, but will see them as separate widgets in asset library. Thanks and appreciate your blog posts. Hard to find information. VinAnonymous
November 19, 2009
Hi Unni, Thanks for posting this information. I can able to create and insert a plug-in in blend 2.0 by using AddIn API. But I am getting compilation error when trying the same in Blend 3.0. If possible could you please give some information regarding plug-in creation for blend 3. Later on I came to know that Blend 3.0 doesn't provide plug-in support. Could you please let me know whether in feature Blend will enable the same? Thanks in advance Regards Ashique M