stride3d/stride · error · NotSupportedException

SelectionMode.Multiple is not yet supported. Please use…

Error message

SelectionMode.Multiple is not yet supported. Please use SelectionMode.Single or SelectionMode.Extended.

What it means

This custom TreeView supports only SelectionMode.Single and SelectionMode.Extended. When the SelectionMode dependency property changes to Multiple, OnSelectionModeChanged immediately throws NotSupportedException because Multiple selection semantics are not implemented.

Solutions

  1. Use SelectionMode="Extended" to allow multi-select with ctrl/shift.
  2. Use SelectionMode="Single" if only one item may be selected.
  3. If Multiple is required, implement a custom control or wrap items with IsSelected view-model flags instead.

Example fix

// before
<controls:TreeView SelectionMode="Multiple"/>
// after
<controls:TreeView SelectionMode="Extended"/>
Defensive patterns

Strategy: validation

Validate before calling

var mode = (SelectionMode)treeView.GetValue(controls:TreeView.SelectionModeProperty);
if (mode == SelectionMode.Multiple)
    throw new NotSupportedException("Multiple selection mode is unsupported by this TreeView");

Type guard

bool IsSupportedSelectionMode(SelectionMode m) => m == SelectionMode.Single || m == SelectionMode.Extended;

Try / catch

try { treeView.SelectionMode = requested; }
catch (NotSupportedException ex) when (ex.Message.Contains("Multiple")) { treeView.SelectionMode = SelectionMode.Extended; }

Prevention

When it happens

Trigger: Setting SelectionMode="Multiple" in XAML on this TreeView, or assigning treeView.SelectionMode = SelectionMode.Multiple in code, which fires the property-changed callback.

Common situations: Copy-pasting SelectionMode values from the standard WPF ListBox/TreeView usage; assuming full System.Windows.Controls.SelectionMode parity; designers choosing Multiple in the properties grid.

Related errors


AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14). Data as JSON: /api/errors/7915425324431a43. Report an issue: GitHub.

Appendix: source

Thrown at sources/presentation/Stride.Core.Presentation.Wpf/Controls/TreeView.cs:599

            }

            if (e.NewValue != null)
            {
                var collection = e.NewValue as INotifyCollectionChanged;
                if (collection != null)
                {
                    collection.CollectionChanged += treeView.OnSelectedItemsChanged;
                }
            }
        }

        private static void OnSelectionModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var newValue = (SelectionMode)e.NewValue;
            switch (newValue)
            {
                case SelectionMode.Multiple:
                    throw new NotSupportedException("SelectionMode.Multiple is not yet supported. Please use SelectionMode.Single or SelectionMode.Extended.");

                case SelectionMode.Single:
                    break;

                case SelectionMode.Extended:
                    var treeView = (TreeView)d;
                    var selectedItem = treeView.SelectedItem;
                    treeView.updatingSelection = true;
                    for (var i = treeView.SelectedItems.Count - 1; i >= 0; --i)
                    {
                        if (treeView.SelectedItems[i] == selectedItem)
                            continue;

                        var item = treeView.GetTreeViewItemFor(treeView.SelectedItems[i]);
                        if (item != null)
                            item.IsSelected = false;
                        treeView.SelectedItems.RemoveAt(i);
                    }

View on GitHub (pinned to 96fad776d2)