c# - 如何在对标题应用排序后刷新 WPF Treeview 内容?
问题描述
我有一个显示文件夹结构(下的文件夹和文件)的树视图。
我想添加一个按钮以允许按字母顺序对内容(文件)进行排序。
这是我的实现:
XAML
<TreeView Name="WorkspaceTree" Grid.Row="1" FontSize="13" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="200" IsTextSearchEnabled="True" SelectedItemChanged="ProjectWorkspace_SelectedItemChanged" MouseRightButtonDown="ProjectWorkspace_MouseRightButtonDown" MouseDoubleClick="ProjectWorkspace_MouseDoubleClick">
<TreeView.Resources>
<ContextMenu x:Key ="FolderContext" StaysOpen="true">
<MenuItem x:Name="ProjectWorkspace_OpenAll" Header="Open All" Click="ProjectWorkspace_OpenAll_Click"/>
</ContextMenu>
<ContextMenu x:Key="ReaderContext" StaysOpen="true">
<MenuItem x:Name="ProjectWorkspace_Open" Header="Open" Click="ProjectWorkspace_Open_Click"/>
<MenuItem x:Name="ProjectWorkspace_Build" Header="Build" Click="ProjectWorkspace_Build_Click"/>
</ContextMenu>
</TreeView.Resources>
No workspace was loaded...
</TreeView>
树后面是代码。这是一个快照。
...
WorkspaceTree.Items.Clear();
var rootDirectoryInfo = new DirectoryInfo(dlg.FileName);
TreeViewItem root_item = CreateDirectoryNode(rootDirectoryInfo);
if (root_item != null)
{
WorkspaceTree.Items.Add(root_item);
...
}
private static TreeViewItem CreateDirectoryNode(DirectoryInfo directoryInfo)
{
var directoryNode = new TreeViewItem { Header = directoryInfo.Name, Tag = "Folder" };
foreach (var directory in directoryInfo.GetDirectories())
{
TreeViewItem dir_recursive_item = CreateDirectoryNode(directory);
if (dir_recursive_item != null)
directoryNode.Items.Add(dir_recursive_item);
}
foreach (var file in directoryInfo.GetFiles("*.txt"))
directoryNode.Items.Add(new TreeViewItem { Header = file.Name, Tag = file.FullName });
if (directoryNode.Items.Count == 0)
return null;
return directoryNode;
}
}
现在显示树后,通过 UI 交互,应该对其内容进行排序。我放置了一个按钮,其点击事件是:
private void Sort_Click(object sender, RoutedEventArgs e)
{
WorkspaceTree.Items.SortDescriptions.Clear();
WorkspaceTree.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));
}
事件运行时 - 树本身没有任何反应。
我尝试在 中进行排序Header.Name
,但SortDescription
行为没有改变。
我错过了什么?
解决方案
推荐阅读
- grep - 使用 grep 的输出,在同一目录中的不同文件中 grep 另一个字符串/字符串
- mangopay - 芒果支付KYC页面
- spring-boot - 从 Wildfly 10 中排除所有模块
- python - 如何在 python gtk gui 中显示 opencv 视频帧?
- forms - 从上一页网址预填充表单复选框
- r - 如何使用坐标创建地图(使用不同颜色的点)
- django - 如何阻止来自邮递员,失眠等应用程序的请求并只允许一个来源 - django rest框架
- java - 如何摆脱错误“致命信号 11 (SIGSEGV),代码 1,故障地址 0x70”
- excel - 通过条码切换excel表
- python - 如何使用 Python 使用 AWS Lambda 层?