diff --git a/Nodify/Editor/NodifyEditor.cs b/Nodify/Editor/NodifyEditor.cs index 7b5e1174..ca857ec9 100644 --- a/Nodify/Editor/NodifyEditor.cs +++ b/Nodify/Editor/NodifyEditor.cs @@ -259,8 +259,11 @@ private void ApplyRenderingOptimizations() public static readonly DependencyProperty BringIntoViewMaxDurationProperty = DependencyProperty.Register(nameof(BringIntoViewMaxDuration), typeof(double), typeof(NodifyEditor), new FrameworkPropertyMetadata(BoxValue.Double1)); public static readonly DependencyProperty DisplayConnectionsOnTopProperty = DependencyProperty.Register(nameof(DisplayConnectionsOnTop), typeof(bool), typeof(NodifyEditor), new FrameworkPropertyMetadata(BoxValue.False)); public static readonly DependencyProperty ConnectionTemplateProperty = DependencyProperty.Register(nameof(ConnectionTemplate), typeof(DataTemplate), typeof(NodifyEditor)); + public static readonly DependencyProperty ConnectionTemplateSelectorProperty = DependencyProperty.Register(nameof(ConnectionTemplateSelector), typeof(DataTemplateSelector), typeof(NodifyEditor)); public static readonly DependencyProperty DecoratorTemplateProperty = DependencyProperty.Register(nameof(DecoratorTemplate), typeof(DataTemplate), typeof(NodifyEditor)); + public static readonly DependencyProperty DecoratorTemplateSelectorProperty = DependencyProperty.Register(nameof(DecoratorTemplateSelector), typeof(DataTemplateSelector), typeof(NodifyEditor)); public static readonly DependencyProperty PendingConnectionTemplateProperty = DependencyProperty.Register(nameof(PendingConnectionTemplate), typeof(DataTemplate), typeof(NodifyEditor)); + public static readonly DependencyProperty PendingConnectionTemplateSelectorProperty = DependencyProperty.Register(nameof(PendingConnectionTemplateSelector), typeof(DataTemplateSelector), typeof(NodifyEditor)); public static readonly DependencyProperty DecoratorContainerStyleProperty = DependencyProperty.Register(nameof(DecoratorContainerStyle), typeof(Style), typeof(NodifyEditor)); /// @@ -300,6 +303,15 @@ public DataTemplate ConnectionTemplate set => SetValue(ConnectionTemplateProperty, value); } + /// + /// Gets or sets the custom logic for choosing a template for . + /// + public DataTemplateSelector ConnectionTemplateSelector + { + get => (DataTemplateSelector)GetValue(ConnectionTemplateSelectorProperty); + set => SetValue(ConnectionTemplateSelectorProperty, value); + } + /// /// Gets or sets the to use when generating a new . /// @@ -309,6 +321,15 @@ public DataTemplate DecoratorTemplate set => SetValue(DecoratorTemplateProperty, value); } + /// + /// Gets or sets the custom logic for choosing a template for . + /// + public DataTemplateSelector DecoratorTemplateSelector + { + get => (DataTemplateSelector)GetValue(DecoratorTemplateSelectorProperty); + set => SetValue(DecoratorTemplateSelectorProperty, value); + } + /// /// Gets or sets the to use for the . /// @@ -318,6 +339,15 @@ public DataTemplate PendingConnectionTemplate set => SetValue(PendingConnectionTemplateProperty, value); } + /// + /// Gets or sets the custom logic for choosing a template for . + /// + public DataTemplateSelector PendingConnectionTemplateSelector + { + get => (DataTemplateSelector)GetValue(PendingConnectionTemplateSelectorProperty); + set => SetValue(PendingConnectionTemplateSelectorProperty, value); + } + /// /// Gets or sets the style to use for the . /// diff --git a/Nodify/Themes/Styles/NodifyEditor.xaml b/Nodify/Themes/Styles/NodifyEditor.xaml index 522e3748..063b0596 100644 --- a/Nodify/Themes/Styles/NodifyEditor.xaml +++ b/Nodify/Themes/Styles/NodifyEditor.xaml @@ -79,6 +79,7 @@ SelectedItems="{TemplateBinding SelectedConnections}" CanSelectMultipleItems="{TemplateBinding CanSelectMultipleConnections}" ItemTemplate="{TemplateBinding ConnectionTemplate}" + ItemTemplateSelector="{TemplateBinding ConnectionTemplateSelector}" IsTabStop="False">