The #develop teamblog
#  Wednesday, 24 October 2007

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!

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.


Priority: High

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.


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


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.


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.

Categories: Chris
Wednesday, 24 October 2007 19:01:35 (GMT Daylight Time, UTC+01:00)  #    Comments [0]


© Copyright 2016 SharpDevelop Core Team

Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.   RSS 2.0|Atom 1.0  Send mail to the author(s)


Copyright ©2000-2009 IC#Code. All rights reserved. Projects sponsored by AlphaSierraPapa.