首页 > 解决方案 > TreeViewItem 展开事件

问题描述

您好,我正在使用一个WPF应用程序,我希望在扩展TreeView. 我知道目前还没有活动,但我不确定如何以我这样做的方式添加一个活动,因此我们将不胜感激。

这是xaml。

 <TreeView x:Name="TreeView" Margin="20">
        <TreeView.Resources>
              <Style TargetType="{x:Type TreeViewItem}">
                   <!-- Some style -->
              </Style>
              <DataTemplate DataType="{x:Type models:DirectoryPathItem}">
                   <!-- some template -->
              </DataTemplate>
        </TreeView.Resources>
 </TreeView>

我正在加载后面的代码。

    private void LoadBaseDirectories()
    {
        var directoryInfo = new DirectoryInfo(@"C:\");

        var directories = directoryInfo.GetDirectories();

        foreach (var directory in directories)
        {
            TreeView.Items.Add(new DirectoryPathItem()
            {
                Children = new ObservableCollection<PathItem>(),
                Path = directory.FullName,
                Header = directory.Name
            });
        }
    }

有没有一种方法可以在扩展之前调用事件,TreeViewItem以便加载孩子?

标签: c#wpf

解决方案


在实际展开之前加载子项可能会导致用户不理解列表为空的原因的无响应 UI。

我建议添加一个代表后台任务的项目(例如:某种加载微调器),并在发现它们后立即添加适当的项目。

完成后,您可以删除加载微调器项目。

这样,您将不需要新事件,并且用户将了解正在发生的事情。


推荐阅读