【问题标题】:Insert white space of arbitrary width to FlowDocument将任意宽度的空白插入 FlowDocument
【发布时间】:2011-04-26 21:38:41
【问题描述】:

有没有办法将给定宽度的空白插入FlowDocument 作为Inline?这样我就可以根据需要“缩进”其他一些Inlines。

如果可以在行中的某个 x 偏移上放置一些内联,也可以解决问题。

注意:这样做的目的是解决this question 中描述的问题的部分问题。

【问题讨论】:

    标签: .net wpf richtextbox inline flowdocument


    【解决方案1】:

    您可以使用容器类,例如:

    <RichTextBox>
        <FlowDocument>
            <Paragraph>
                <InlineUIContainer>
                    <FrameworkElement Width="200"/>
                </InlineUIContainer>
                <Run x:Name="RunChan" Text="Indented Text"/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>
    

    我不会真的推荐它。


    在文本块中:

    <TextBlock>
        <InlineUIContainer>
            <FrameworkElement Width="200"/>
        </InlineUIContainer>
        <Run x:Name="RunChan" Text="Indented Text"/>
    </TextBlock>
    

    【讨论】:

    • 这里有2个问题:首先,包含文本Blah blah blahRun可以换行到下一行,在这种情况下,我将在那里有空的白行。第二个&lt;InlineUIContainer&gt; 不受TextBlock 支持(我仍然可以将它与FlowDocument 一起使用)。
    • 我的文本块支持它(添加到答案中)
    • H.B.:那我错了……你为什么不推荐它?我知道这还不清楚,但你有什么特别的原因吗?你能在this question 的上下文中找到一个更好的解决方案吗(空格是为了缩进和弦,以便它们出现在正确的歌词字符上)?
    • 我不喜欢它,因为我认为插入一个虚拟控件来控制间距有点过分。如果你有 Blocks 供你使用,你可以使用他们的 Margin 属性,可惜 Inlines 没有这个属性。顺便说一句,创建评论时点击帮助按钮可以找到评论链接语法
    • H.B.:我想知道为什么他们没有保证金属性?你认为我可以继承Inline 来创建类似SpanWithMargin 类的东西吗?我需要能够影响Inlines 的布置方式。或者至少控制它们占用的空间。添加链接:我已经更正了链接,我不得不检查语法,之前从未提到过帮助链接。
    【解决方案2】:

    我不确定这是否能解决您的问题,但如果您想“缩进”一个内联,也许您可​​以插入一个小的 Floater 或 Figure 大小来满足您的需要。确保 Floater 很短,这样它就不会超过一行。

    我自己也在寻找比这更优雅的东西,但这同时对我有用。

    【讨论】:

    • 嗯,这是一个选项,但不是很清楚……而且还不清楚越野车的解决方案。如果我使用Figure 而不是Floater 它不能跨越到下一行,对吗?好吧,如果您发现有用的东西或有任何想法,请告诉我。你也会在这里找到我的进步。如果在类Span 中有类似属性MinimumXOffset 会很棒。或者,如果有办法对其进行子类化并实现此类属性。
    • 会做的——我的一个大愿望是让微软正式化和展示 FlowDocument 元素的格式,以便我们可以像创建自定义 FrameworkElements 一样实现我们自己的内联和块。
    • 所以我们现在不能实现我们自己的Inlines 吗?或者我们只是不知道如何,因为它已记录在案?我在想创建我自己的Inline 是摆脱这个内联地狱的唯一出路......
    • 不确定,但我认为呈现行为特定于 FlowDocument 类集。换句话说,FlowDocument 的渲染器似乎解释了如何用自己的代码渲染元素,而不是将其推迟到元素内部的代码中。如果您在某些元素上使用 Reflector,则它们不包含任何实际格式化方式。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多