Проблема с программным вызовом редактора узла в TreeListView (DevExpress WPF)

Столкнулся со следующей проблемой. TreeListView отображает элементы из локальной бд. Узлы в дереве могут редактироваться. Вот пример фрагмента кода XAML, кастомизированного редактора ...

<dxg:GridColumn.EditFormTemplate>
    <DataTemplate>
        <StackPanel>
            <dxe:ListBoxEdit ShowBorder="False" Background="{x:Null}" SelectedIndex="{Binding Path=RowData.Source.Row.Dir}" x:Name="lbButtonIndex" Margin="0,0,0,5">
                <dxe:ListBoxEditItem Content="Текстовой фрагмент"/>
                <dxe:ListBoxEditItem Content="Директория" Margin="6,0,0,0"/>
                <dxe:ListBoxEdit.StyleSettings>
                    <dxe:RadioListBoxEditStyleSettings/>
                </dxe:ListBoxEdit.StyleSettings>
                <dxe:ListBoxEdit.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </dxe:ListBoxEdit.ItemsPanel>
            </dxe:ListBoxEdit>
            <dxe:MemoEdit Name="PART_Editor" MemoTextWrapping="Wrap" ShowIcon="False" TextWrapping="Wrap" PrintTextWrapping="Wrap">
                <dxe:MemoEdit.EditTemplate>
                    <ControlTemplate>
                        <dxe:MemoEdit Name="MemoEditName" ShowIcon="False" EditValue="{Binding Path=Source.Row.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True }"/>
                    </ControlTemplate>
                </dxe:MemoEdit.EditTemplate>
            </dxe:MemoEdit>
        </StackPanel>
    </DataTemplate>
</dxg:GridColumn.EditFormTemplate>

По событию обрабатываем добавление нового узла (там же в xaml'е)

<dxmvvm:Interaction.Behaviors>
    <dxmvvm:EventToCommand EventName="NodeUpdated" Command="{Binding Path=UpdateCommand}" CommandParameter="{Binding ElementName=view}"/>
</dxmvvm:Interaction.Behaviors>

В коде обрабатываем это событие

public static void Add(TreeListView tree)
{
    Diagnos model = (Diagnos)tree.FocusedNode.Content;           
    TreeListNode node = new TreeListNode() { Content = new Diagnos() { Dir = 0, Name = "Новый" }};
           
    if (model.Dir == 1) // директория
    {  
        tree.FocusedNode.Nodes.Add(node);
    }
    else
    {
        tree.FocusedNode.ParentNode.Nodes.Add(node);
    }
           
    tree.FocusedNode = node;
    tree.ShowEditForm();
}

Код предельно прост. На выделенной строке создаем новый узел, если это директория, то прямо в ней, если "файл" - в содержащую его папку, и открыть редактор. Теперь собственно в чем проблема. Заметил что если директория в которой относительно немного элементов, то все работает корректно. корректно А вот если в директории 20 - 30 элементов, то открывает с ошибкой с ошибкой. Я предполагаю это как-то связано с виртуализацией. Например, если изменять фокус на первых сущ-щих элементах этой коллекции например вот так, tree.FocusedNode = tree.FocusedNode.Nodes[10], то отрабатывает корректно, иначе если Nodes[20] из 27 существующих элементов, то та же ошибка что и с новым элементом. Если это как-то связано с виртуализацией, то как подгрузить отсутствующие эл-ты, какие рецепты есть. Возможно причина в другом. Буду крайне признателен ответившим.


Ответы (0 шт):