您好,我正在使用一个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
之前,有没有一种方法可以调用事件,以便我可以加载子级?
答案 0 :(得分:1)
在实际展开之前加载子项可能会导致用户界面不响应,用户无法理解列表为何为空。
我建议添加一个代表后台任务的项目(例如:某种类型的装载微调器),并在发现合适的项目后立即添加。
完成后,您可以删除正在加载的微调器项目。
这样,您将不需要新事件,用户将了解发生了什么事情。