我需要有人指点我正确的方向。Wpf- Visual Studio中的文本框如何折叠区域,以及如何在我的文本编辑器中实现此功能?
我需要做些什么来折叠文本框中的文本区域?
我不需要知道如何让用户定义区域,只要您拥有该区域的索引和长度,如何折叠区域。我也想像Visual Studio一样,留下一个可以提醒你折叠的区域,你可以点击展开它们。
我需要有人指点我正确的方向。Wpf- Visual Studio中的文本框如何折叠区域,以及如何在我的文本编辑器中实现此功能?
我需要做些什么来折叠文本框中的文本区域?
我不需要知道如何让用户定义区域,只要您拥有该区域的索引和长度,如何折叠区域。我也想像Visual Studio一样,留下一个可以提醒你折叠的区域,你可以点击展开它们。
Visual Studio使用自己的文本编辑器控件,而不是WPF内置的TextBox。 Visual Studio内置的文本编辑器具有许多与代码编辑相关的高级功能,但不能从Visual Studio中单独获得。
有许多开源和组件文本编辑器控件可用于WPF,其中包括区域折叠。我建议您下载AvalonEdit或this answer中列出的任何文本编辑器控件,以了解它是如何完成的,并且可以重新使用您下载的控件,也可以使用类似的技术来自己推出自己的控件。
大多数文本编辑器用于区域折叠的技巧是在为每行保留的数据结构中包含一个“大纲隐藏”标志,除了“大纲开始”标志,“大纲结束”指针和“嵌套级别”。通过保持这些更新并让显示模板通过绘制正确的图标/按钮和/或隐藏线条来表示它们,您可以很容易地获得所需的效果。显然,这依赖于文本编辑器的数据结构,它们独立地跟踪和显示每一行,这需要WPF中未包含的用于选择,导航等的额外逻辑。