【问题标题】:Tree Structure in RichtextboxRichtextbox 中的树形结构
【发布时间】:2012-11-09 18:36:02
【问题描述】:

我正在使用一个非常简单的树结构:

class Tree { }
class Node : Tree {
    public List <Tree> Children;
}
class Leave : Tree {
    public string Content;
}

我想在 WPF - RichTextBox 中显示它,结果看起来像这样,但绑定到我的树:

<FlowDocument>
  <Section>
    <Paragraph>
      TEXT_FOOTER
    </Paragraph>
  </Section>
</FlowDocument>

只有树的叶子在段落中显示其内容,而节点在部分中显示。

目前我正在以编程方式解决此问题,但要使 RTB 与我的树保持同步是一项艰巨的工作。 有没有办法将这样的结构绑定到 Box,我知道 Document-Property 不是依赖属性,所以没有绑定。

我遇到了这个 TextBox:Here,但我不知道是否以及如何绑定它,wpf 目前似乎不知道 HierachicalDataTemplate。 有什么方法可以让 wpf 进行我的同步工作吗?

【问题讨论】:

    标签: wpf tree richtextbox


    【解决方案1】:

    我终于解决了。问题是:WPF 没有给我任何使用 DataBinding 的可能性,所以我写了使用“onTextElementChanged”和 text.Selection.Start.Parent 来接收光标所在的运行。 我想要映射的相应数据结构存储在父段落的“标签”属性中。我知道这是一个非常丑陋的解决方案,但它是唯一一个正常工作的解决方案。

    如果发生变化,我必须连接多个运行,因为 RTB 会随机拆分它们以将更改写回。这就是为什么我把段落存储起来。

    另一个方向可以通过监听 PropertyChanged 事件来解决,就像 WPF 呈现给你一样。

    仍然无法解决的最大问题是 RTB 的撤消功能。因为我必须构建一个更复杂的数据结构,所以我使用了一些 UserControls 和 InlineUIContainer。如果您删除其中一个(例如通过按“entf”),程序会因 StackOverflowException 而崩溃。这是 WPF 中的“未记录的功能”或错误,Microsoft 不会费心修复它。

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多