Back to Devexpress

DiagramDataBindingBehaviorBase.KeySelector Property

wpf-devexpress-dot-xpf-dot-diagram-dot-diagramdatabindingbehaviorbase-ab4c1fb3.md

latest4.1 KB
Original Source

DiagramDataBindingBehaviorBase.KeySelector Property

Gets or sets the selector that returns the data field that identifies the data item. This is a dependency property.

Namespace : DevExpress.Xpf.Diagram

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

NuGet Package : DevExpress.Wpf.Diagram

Declaration

csharp
public IKeySelector KeySelector { get; set; }
vb
Public Property KeySelector As IKeySelector

Property Value

TypeDescription
DevExpress.Diagram.Core.IKeySelector

An object implementing the DevExpress.Diagram.Core.IKeySelector interface.

|

Remarks

Use the KeySelector property to define a custom logic for choosing the data field that identifies the data item (e.g., when binding to data with multiple types of data objects). To do this, implement the GetKey method of the DevExpress.Diagram.Core.IKeySelector interface, so that it returns the data field that identifies the data item. See the example below.

xaml
<dxdiag:DiagramControl>
                <dxdiag:DiagramControl.Resources>
                    <local:DatabaseDefinitionKeySelector x:Key="databaseDefinitionKeySelector"/>
                </dxdiag:DiagramControl.Resources>
                <dxmvvm:Interaction.Behaviors>
                    <dxdiag:DiagramDataBindingBehavior ItemsSource="{Binding Database.Tables}"
                                                   ItemsPath="Columns" KeySelector="{StaticResource databaseDefinitionKeySelector}">
                        <!---->
                    </dxdiag:DiagramDataBindingBehavior>
                </dxmvvm:Interaction.Behaviors>
            </dxdiag:DiagramControl>
csharp
public class DatabaseDefinitionKeySelector : IKeySelector {
        object IKeySelector.GetKey(object obj) {
            if(obj is TableDefinition)
                return ((TableDefinition)obj).Name;
            else if(obj is ColumnDefinition)
                return ((ColumnDefinition)obj).Id;
            return obj;
        }
    }
vb
Public Class DatabaseDefinitionKeySelector
        Implements IKeySelector

        Private Function IKeySelector_GetKey(ByVal obj As Object) As Object Implements IKeySelector.GetKey
            If TypeOf obj Is TableDefinition Then
                Return DirectCast(obj, TableDefinition).Name
            ElseIf TypeOf obj Is ColumnDefinition Then
                Return DirectCast(obj, ColumnDefinition).Id
            End If
            Return obj
        End Function
    End Class

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

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-generate-diagram-with-grouped-items/CS/DiagramNestedItemsExample/MainWindow.xaml#L88

xml
ItemsSource="{Binding Departments}"
KeySelector="{StaticResource keySelector}"
DiagramItemAdding="DiagramDataBindingBehavior_DiagramItemAdding"

See Also

DiagramDataBindingBehaviorBase Class

DiagramDataBindingBehaviorBase Members

DevExpress.Xpf.Diagram Namespace