Windows Azure SQL Database Marketplace
[This article was contributed by the AppFabric team.]
To make an activity's display name readonly, it isn't enough to use the ReadOnlyAttribute on the DisplayName. In order to do this, create a custom PropertyValueEditor that displays a string in a text block, then declare an editor attribute on the "DisplayName" property of your activity. The following code demonstrates how to create a read-only custom PropertyValueEditor.
public class ReadOnlyStringEditor : PropertyValueEditor { public ReadOnlyStringEditor() { FrameworkElementFactory factory = new FrameworkElementFactory(typeof(TextBlock)); factory.SetBinding(TextBlock.TextProperty, new Binding("Value")); this.InlineEditorTemplate = new DataTemplate(); this.InlineEditorTemplate.VisualTree = factory; } }
The following code demonstrates how to assign the custom property editor. This should be done in the constructor for the designer.\
// Add attribute onto MyCustomActivity.DisplayName AttributeTableBuilder builder = new AttributeTableBuilder(); builder.AddCustomAttributes(typeof(Activity), "DisplayName", new EditorAttribute(typeof(ReadOnlyStringEditor), typeof(PropertyValueEditor))); MetadataStore.AddAttributeTable(builder.CreateTable());
Finally, assign the display name in the custom activity's constructor.
this.DisplayName = "Custom Sequence Activity";