Daniel is currently working on areas such as project subsystem or code completion
(aside from fixing bugs). Therefore, work on the WPF designer is stalled. But Daniel
put together a list of tasks (hard, medium & easy) that you could be helping us
with. So if you are interested in helping, and want to be part of writing an open
source WPF designer, please do get in touch with me at christophw at icsharcode.net!
WPF Designer mini tasks
Here are some jobs to do on the WPF Designer broken into small parts.
Apart from this list, there are also big jobs to do: Data Binding support, support
using Styles, support defining resources.
Components to be used by multiple designer parts
Create “Choose Class” dialog
The data binding UI will need a dialog that allows choosing a class from the referenced
assemblies. This will be implemented in WpfDesigner.AddIn and made available to WpfDesign.Designer
through a service. The referenced assemblies should be inspected using ICSharpCode.SharpDevelop.Dom
This will be used by the “Content” property editor and by the data binding UI.
Support ‘Virtual Design Root Element’
This means that instead of displaying the designed component, the designer is able
to display another component as if it was the root component. The designer should
provide a “Back” button on the design surface to allow the user to go back to the
real root component.
This feature is required for designing elements that cannot be designed directly on
the main design surface, e.g. Tooltips
Write menu designer
Priority: High
The menu designer might be a dialog box that allows editing the menu in a tree view;
or it might be an in-place menu designer like the Windows.Forms designer.
Property editing support
Here I’m listing properties that could need improved editing support.
When implementing property editors, take care that the editor should also work when
multiple components with different property values are selected, so you always need
a way to represent the ‘ambiguous’ value.
Properties of type Brush (e.g. Control.Background / Control.BorderBrush)
Priority: High
Change ICSharpCode.WpfDesign.Designer.Controls.TypeEditors.BrushEditor to include
a little drop down button, the drop down should allow to choose the brush type (SolidColorBrush,
etc., we don't need to support all of them at the beginning) and allow the user to
edit the brush according to the chosen type.
Properties of type BitmapEffect / BitmapEffectInput (e.g. UIElement.BitmapEffect
/ UIElement.BitmapEffectInput)
Priority: Low
Implement a TypeEditor (similar to BrushEditor) for the types BitmapEffect and BitmapEffectInput.
Could be as simple as a combo box with the most commonly used effects.
Properties of type ICommand (e.g. ButtonBase.Command)
Priority: Medium
There should be a way to choose the command to use from some kind of list.
ContentControl.Content
Priority: High
ICSharpCode.WpfDesign.Designer.Controls.TypeEditors.ContentEditor
The “C” button should be made a drop down button (like the one used for the Brush
editor), it should present “null”, “string”, and menu items for creating commonly
used child configurations (e.g. StackPanel with Image and Text when the parent is
a button), and “choose class” to create arbitrary objects. This depends on “Create
Choose Class Dialog”.
Properties of type ContextMenu (e.g. FrameworkElement.ContextMenu)
Priority: Medium
Provide a way to create and edit a context menu inside the designer.
Properties of type InputScope
Priority: Low
Research what an InputScope is and if/how we should allow the user to edit it.
Properties of type Transform
Priority: Low
Similar to the BrushEditor, provide a drop down to choose from the different available
transforms and allow editing the transform properties.
FrameworkElement.ToolTip
Priority: Medium (setting string tool tips), Low (designing complex tool tips)
Should be editable similar to ContentControl.Content, but has to allow the user to
design complex tooltips. Depends on “Support ‘Virtual Design Root Element’”
Properties of type FontStretch / FontStyle / FontWeight
Priority: Low
Provide a drop down with the available settings
Properties of type FontFamily
Priority: Low
Use a dialog to allow the user to choose the font to use.
Properties of type Nullable<bool> (e.g. ToggleButton.IsChecked)
Priority: Low
ItemsControl.ItemsSource
Priority: Low
There are two main usage scenarios: this property is specified using data binding
(this doesn’t need to be handled by the type editor), or there are some hard coded
values.
Write a type editor to support entering string values.
Label.Target
Priority: Low
Label.Target is set to the control described by the label (the control getting focus
when Alt+Access Key is pressed). This is done using data binding, but choosing the
target from the data binding dialog is too tedious – drag’n’drop of a crosshair on
the target control would be much easier. Depends on data binding support.
Properties of type ImageSource (e.g. Image.Source)
Priority: High
Allow choosing a “Resource” element already part of the project, or choose a file
and it will get added to the project. This TypeEditor would be implemented in WpfDesign.AddIn
and not WpfDesign.Designer because it needs access to the project in SharpDevelop
Properties of type ViewBase (e.g. ListView.View)
Priority: Low
Provide a drop down with the most commonly used views.
Read the complete post at http://laputa.sharpdevelop.net/HelpWantedWPFDesignerTasks.aspx