wpf-devexpress-dot-xpf-dot-diagram-dot-diagramcontrol-14e10198.md
Allows you to update the set of properties displayed by the property grid.
Namespace : DevExpress.Xpf.Diagram
Assembly : DevExpress.Xpf.Diagram.v25.2.dll
NuGet Package : DevExpress.Wpf.Diagram
public event EventHandler<DiagramCustomGetEditableItemPropertiesCacheKeyEventArgs> CustomGetEditableItemPropertiesCacheKey
Public Event CustomGetEditableItemPropertiesCacheKey As EventHandler(Of DiagramCustomGetEditableItemPropertiesCacheKeyEventArgs)
The CustomGetEditableItemPropertiesCacheKey event's data class is DiagramCustomGetEditableItemPropertiesCacheKeyEventArgs. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| CacheKey | Gets or sets the cache key assigned to the edited diagram item. |
| Item | Returns the edited diagram item. |
The DiagramControl caches a set of editable properties for each diagram item type. These properties are displayed by the property grid when an end-user selects an item.
If you want to display different sets of a diagram item’s properties depending on certain condition, you can handle the CustomGetEditableItemPropertiesCacheKey event.
Note
Do not handle this event if your items always display the same set of properties.
The following example demonstrates a custom shape that derives from the DiagramShape. When the ShowInfo property value is set to true , the property grid displays the Info property.
//DiagramShapeEx.cs
public class DiagramShapeEx : DiagramShape {
//the NotifyParentProperty attribute is used to notify the DiagramControl
//that the ShowInfo value has changed.
[NotifyParentProperty(true)]
public bool ShowInfo {
get;
set;
}
public string Info {
get;
set;
}
}
void diagramControl1_CustomGetEditableItemProperties(object sender, DiagramCustomGetEditableItemPropertiesEventArgs e) {
DiagramShapeEx shapeEx = e.Item as DiagramShapeEx;
if (shapeEx != null) {
e.Properties.Add(TypeDescriptor.GetProperties(typeof(DiagramShapeEx))["ShowInfo"]);
if (shapeEx.ShowInfo)
e.Properties.Add(TypeDescriptor.GetProperties(typeof(DiagramShapeEx))["Info"]);
}
}
void diagramControl1_CustomGetEditableItemPropertiesCacheKey(object sender, DiagramCustomGetEditableItemPropertiesCacheKeyEventArgs e) {
if (e.Item is DiagramShapeEx)
e.CacheKey = Tuple.Create(typeof(DiagramShapeEx), ((DiagramShapeEx)e.Item).ShowInfo);
}
Tip
If you have a reasonable number of shapes on the canvas, you can set the e.CacheKey to null without affecting the performance.
See Also