Я знаю, что об этом уже было какое-то обсуждение, но я пока не смог решить свою проблему.
Что касается загрузки товаров по требованию, она уже работает нормально. У меня есть подкласс TreeViewItem, и всякий раз, когда происходит событие «Expanded», мой TreeViewItemSource выбирает следующие несколько узлов.
Но это немного грязно, так как у меня есть собственный TreeViewItem, и, поскольку я добавляю элементы через TreeView.Items.Add (), я теряю возможность определять представление моих узлов в XAML.
Это несколько неудобно, так как я хочу отображать значок с каждым узлом, и вставка этого в код, по крайней мере, немного противоречит правилам.
Итак, к чему сводится мой вопрос: нельзя ли связать свойство IsExpanded без "трюка" от Bea Stollnitz?
Вот как я предполагал, что это будет работать, но это не так:
<sdk:TreeView Name="treeView1">
<Style TargetType="sdk:TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
</Style>
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Children}" >
<TextBlock Text="{Binding Path=Label, Mode=OneWay}" />
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
Так что, если бы я мог связываться с IsExpanded, я мог бы получать новые узлы всякий раз, когда родительский узел был раскрыт.
Что я делаю не так? Разве это не было бы лучшим решением проблемы? Есть новые идеи?
Просто чтобы прояснить: идеальным сценарием было бы то, что я мог бы взять кучу POCO (например, с меткой и значком) из веб-сервиса и выполнить всю стилизацию через XAML. Желательно, чтобы мне не приходилось помещать их во что-то еще, так как это очень медленно (по крайней мере, в моей текущей реализации, около 1000 элементов, прокрутка выглядит очень плохо).
Заранее спасибо.