Back to Devexpress

DiagramDataBindingBehaviorBase.GenerateItem Event

wpf-devexpress-dot-xpf-dot-diagram-dot-diagramdatabindingbehaviorbase-6506aef8.md

latest5.5 KB
Original Source

DiagramDataBindingBehaviorBase.GenerateItem Event

Fires before generating a diagram item representing a data object and allows you to customize it.

Namespace : DevExpress.Xpf.Diagram

Assembly : DevExpress.Xpf.Diagram.v25.2.dll

NuGet Package : DevExpress.Wpf.Diagram

Declaration

csharp
public event EventHandler<DiagramGenerateItemEventArgs> GenerateItem
vb
Public Event GenerateItem As EventHandler(Of DiagramGenerateItemEventArgs)

Event Data

The GenerateItem event's data class is DevExpress.Xpf.Diagram.DiagramGenerateItemEventArgs.

Remarks

By default, the uppermost diagram item defined in XAML within the DiagramDataBindingBehaviorBase.TemplateDiagram is used as the template for the diagram items representing data objects.

You can use the GenerateItem event to implement custom logic for choosing the item template. To do this, create diagram items in the DiagramDataBindingBehaviorBase.TemplateDiagram and specify their names using the DiagramItem.TemplateName property. Specify the name of the desired template as the event’s CreateItemFromTemplate method parameter and assign the method return value to the event’s Item property. See the example below.

csharp
private void DiagramDataBindingBehavior_GenerateItem(object sender, DiagramGenerateItemEventArgs e) {
    if (e.DataObject is PentagonDataItem)
        e.Item = e.CreateItemFromTemplate("PentagonShape");
    else e.Item = e.CreateItemFromTemplate("DefaultItem");
}
vb
Private Sub DiagramDataBindingBehavior_GenerateItem(ByVal sender As Object, ByVal e As DiagramGenerateItemEventArgs)
    If TypeOf e.DataObject Is PentagonDataItem Then
        e.Item = e.CreateItemFromTemplate("PentagonShape")
    Else
        e.Item = e.CreateItemFromTemplate("DefaultItem")
    End If
End Sub

Alternatively, you can use the DiagramDataBindingBehaviorBase.ItemTemplateSelector property.

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the GenerateItem event.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

wpf-diagram-use-diagramdatabindingbehavior-to-generate-diagram-from-collection/CS/DiagramDataBindingBehavior/MainWindow.xaml#L13

xml
<dxmvvm:Interaction.Behaviors>
    <dxdiag:DiagramDataBindingBehavior ItemsSource="{Binding ClassSource}" ConnectorsSource="{Binding ConnectionSource}" ConnectorFromMember="ConnectedFrom" ConnectorToMember="ConnectedTo" KeyMember="ClassName" LayoutKind="Sugiyama" ClearExistingItems="False" GenerateItem="DiagramDataBindingBehavior_GenerateItem" GenerateConnector="DiagramDataBindingBehavior_GenerateConnector">
        <dxdiag:DiagramDataBindingBehavior.TemplateDiagram>

wpf-diagram-use-diagramdatabindingbehavior-to-generate-diagram-from-collection/CS/DiagramDataBindingBehavior/obj/Debug/net8.0-windows/MainWindow.g.cs#L88

csharp
#line 13 "..\..\..\MainWindow.xaml"
((DevExpress.Xpf.Diagram.DiagramDataBindingBehavior)(target)).GenerateItem += new System.EventHandler<DevExpress.Xpf.Diagram.DiagramGenerateItemEventArgs>(this.DiagramDataBindingBehavior_GenerateItem);

wpf-diagram-use-diagramdatabindingbehavior-to-generate-diagram-from-collection/VB/DiagramDataBindingBehavior/obj/Debug/net8.0-windows/MainWindow.g.vb#L89

vb
#ExternalSource("..\..\..\MainWindow.xaml",13)
AddHandler CType(target,DevExpress.Xpf.Diagram.DiagramDataBindingBehavior).GenerateItem, New System.EventHandler(Of DevExpress.Xpf.Diagram.DiagramGenerateItemEventArgs)(AddressOf Me.DiagramDataBindingBehavior_GenerateItem)

See Also

DiagramDataBindingBehaviorBase Class

DiagramDataBindingBehaviorBase Members

DevExpress.Xpf.Diagram Namespace