![](/img/trans.png)
[英]Bind Expanded & Collapsed event of TreeViewItem to viewmodel
[英]TreeViewItem expanded event
您好,我正在使用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
之前调用事件以便加载子项?
在实际展开之前加载子项可能会导致 UI 无响应,用户无法理解列表为何为空。
我建议添加一个代表后台任务的项目(例如:某种加载微调器),并在发现它们后立即添加适当的项目。
完成后,您可以删除加载微调项目。
这样,您就不需要新事件,用户将了解正在发生的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.