
Hi Simon,
We have made a new QuickStart for the upcoming 2014.2 version that shows a very simple example of making a custom property editor for a certain custom data type.
The main meat of the sample is here and this sort of thing is what you want to do:
<propgrid:PropertyGrid x:Name="propGrid" MinHeight="300" Width="300" SelectedObject="{StaticResource HomeAutomationSettings}">
<propgrid:PropertyGrid.PropertyEditors>
<!-- Default 'OnOffAuto' type editor -->
<propgrid:PropertyEditor PropertyType="sample:OnOffAuto">
<propgrid:PropertyEditor.ValueTemplate>
<DataTemplate>
<shared:HorizontalListBox x:Name="listBox" BorderThickness="0"
SelectedValue="{Binding Value, RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}}, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged}">
<sample:OnOffAuto>Auto</sample:OnOffAuto>
<sample:OnOffAuto>On</sample:OnOffAuto>
<sample:OnOffAuto>Off</sample:OnOffAuto>
</shared:HorizontalListBox>
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding IsReadOnly, RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}}}"
Value="true">
<Setter TargetName="listBox" Property="IsEnabled" Value="false" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=(propgrid:PropertyGrid.IsReadOnly), RelativeSource={RelativeSource Self}}"
Value="true">
<Setter TargetName="listBox" Property="IsEnabled" Value="false" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</propgrid:PropertyEditor.ValueTemplate>
</propgrid:PropertyEditor>
</propgrid:PropertyGrid.PropertyEditors>
</propgrid:PropertyGrid>
Make sure whatever control is in your custom value template uses a similar Binding to what is above.