Проблема с программным вызовом редактора узла в 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 существующих элементов, то та же ошибка что и с новым элементом. Если это как-то связано с виртуализацией, то как подгрузить отсутствующие эл-ты, какие рецепты есть. Возможно причина в другом. Буду крайне признателен ответившим.