Здравствуйте.
Давайте сразу, есть TreeView
<TreeView ItemsSource="{Binding MyObjects}" Grid.Row="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal">
<Image Source="/MyAddIn;component\Resources\treeEl.png" Stretch="Fill" Width="12" Height="12" RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Text=" " />
<TextBlock Text="{Binding Description}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
TreeView привязано к коллекции MyObjects, состоящей из элементов MyObject, которая имеет поля
public string Description { get; set; }
public ObservableCollection<MyObject> Children { get; set; }
Коллекция MyObjects лежит в ViewModel и сейчас полностью заполняется рекурсивно, но так как объектов много, то это занимает значительное количество времени.
Я хочу, чтобы мое дерево заполнялось постепенно, т.е. при расширении элемента дерева, коллекция Children у объекта заполнялась новыми объектами.
Пытался реализовать и через TreeViewItem.Expander используя блендовские библиотеки Interactivity/Interactions, пытался реализовать через триггеры IsExpanded, IsSelected, также пытался реализовать это через модель поведения, которые отрыл в гугле, но у меня также ничего не заработало. Просто не ловится ничего из этого. На сколько я понял, связано это с тем, что HierarchicalDataTemplate не работает напрямую с TreeViewItem или как то так(знаний у меня не хватает).
Остался последний непроверенный мной вариант, использовать свойство IsChecked у ToggleButton, коим является сам Expander у элемента дерева, но это опять же создание стиля ToggleButton и все такое.
Мне кажется, что это можно реализовать не трогая этот элемент.
Буду рад абсолютно любым рабочим вариантам(я не прошу писать здесь полное решение, хотя бы статью, страницу в книге, в лучшем варианте я надеюсь на кусочек кода, конечно).
Не исключаю и варианта, что я где-то промазал, хотя по десять раз перепроверял каждый метод и не бездумно, но тыкался.
Не драматизируя скажу: "па-ма-гити".
Спасибо.