TreeViewItem扩展事件

时间:2018-10-09 12:58:05

标签: c# wpf

您好,我正在使用一个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之前,有没有一种方法可以调用事件,以便我可以加载子级?

1 个答案:

答案 0 :(得分:1)

在实际展开之前加载子项可能会导致用户界面不响应,用户无法理解列表为何为空。

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

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

这样,您将不需要新事件,用户将了解发生了什么事情。