【问题标题】:How to put two RichTextBlock(Overflow) one after another vertically in RichTextColumns如何在RichTextColumns中垂直放置两个RichTextBlock(Overflow)
【发布时间】:2013-04-09 15:52:27
【问题描述】:

如前所述,我想将两个 RichTextBlocks 垂直放置。我的意图是手动编写第一个 RichTextBlock 的段落,并且我希望第二个 RichTextBlock(其内容以编程方式给出)在第一个之后立即开始,我希望这种情况发生,以便第二个 RichTextBlock 将垂直溢出到下一栏。

下面的 sn-p 只是为了让您可以看到我正在使用的对象,并且没有任何逻辑意义。

<ScrollViewer 
        Grid.Column="1"
        Grid.Row="1" 
        Grid.RowSpan="2"
        HorizontalScrollMode="Auto"
        HorizontalScrollBarVisibility="Auto"
        VerticalScrollMode="Disabled"
        VerticalScrollBarVisibility="Disabled"
        Padding="20">

            <RichTextBlock>
                <Paragraph><Run></Run></Paragraph>
            <RichTextBlock />

            <common:RichTextColumns>
                <common:RichTextColumns.ColumnTemplate>
                    <DataTemplate>
                        <RichTextBlockOverflow Margin="80,0,0,0" Width="560">
                            <RichTextBlockOverflow.RenderTransform>
                                <TranslateTransform X="-1" Y="4"/>
                            </RichTextBlockOverflow.RenderTransform>
                        </RichTextBlockOverflow>
                    </DataTemplate>
                </common:RichTextColumns.ColumnTemplate>
                <RichTextBlock
                             htmlToXaml:Properties.Html="{Binding HtmlText}"
                             Name="RichTextBlockMy"
                             Margin="10,0,0,0"
                             Style="{StaticResource ItemRichTextStyle}"
                             Width="560"/>
            </common:RichTextColumns>
    </ScrollViewer>

【问题讨论】:

  • 您的代码似乎不正确。没有起始&lt;Run&gt;标签
  • 但是我告诉过你,这段代码是为了让你知道我在使用什么对象,所以我放在那里的无意义的“运行”是告诉你我想在这个 RichTextBlock 中放一些稍后手动添加段落。

标签: windows xaml windows-8 winrt-xaml richtextblock


【解决方案1】:

我想这就是你想要的。

XAML

<ScrollViewer 
    HorizontalScrollMode="Auto"
    HorizontalScrollBarVisibility="Auto"
    VerticalScrollMode="Disabled"
    VerticalScrollBarVisibility="Disabled"
    Padding="20">
    <StackPanel Orientation="Horizontal">

        <RichTextBlock>
            <Paragraph>
                <Run Text="This is fixed RichTextBlock, after this it's RichTextBlock with RichTextColumns" FontSize="20"/>
                <LineBreak />
                <Run Text="{Binding FirstRtbText}" />
                <LineBreak />
                <Run Text="End of fixed RichTextBlock" FontSize="20" />
            </Paragraph>
            </RichTextBlock>

            <common:RichTextColumns>
            <common:RichTextColumns.ColumnTemplate>
                <DataTemplate>
                    <RichTextBlockOverflow Margin="80,0,0,0" Width="560">
                        <RichTextBlockOverflow.RenderTransform>
                            <TranslateTransform X="-1" Y="4"/>
                        </RichTextBlockOverflow.RenderTransform>
                    </RichTextBlockOverflow>
                </DataTemplate>
            </common:RichTextColumns.ColumnTemplate>
            <RichTextBlock 
                     common:Properties.Html="{Binding HtmlText}"
                     Name="RichTextBlockMy"
                     Margin="10,0,0,0"
                     Style="{StaticResource ItemRichTextStyle}"
                     Width="560"/>
        </common:RichTextColumns>
    </StackPanel>
</ScrollViewer>

C#

    public string HtmlText { get; set; }
    public string FirstRtbText { get; set; }
    public MainPage()
    {
        this.InitializeComponent();
        FirstRtbText = @"<h1>Header One</h1>

<p>Lorem ipsum <em>emphasised text</em> dolor sit amet, <strong>strong text</strong> 
consectetur adipisicing elit, <abbr title="""">abbreviated text</abbr> sed do eiusmod tempor 
<acronym title="""">acronym text</acronym> incididunt ut labore et dolore magna aliqua. Ut 
<q>quoted text</q> enim ad minim veniam, quis nostrud exercitation <a href=""/"">link text</a> 
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute <del>deleted text</del> 
<ins>inserted text</ins> irure dolor in reprehenderit in voluptate velit esse cillum 
dolore eu fugiat nulla pariatur. Excepteur sint occaecat <code>code text</code> cupidatat 
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<blockquote>
<p>Blockquote. Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat 
cupidatat non proident, sunt in culpa qui officia</p>
</blockquote>";

            HtmlText = @"<h1>Header One</h1>

<p>Lorem ipsum <em>emphasised text</em> dolor sit amet, <strong>strong text</strong> 
consectetur adipisicing elit, <abbr title="""">abbreviated text</abbr> sed do eiusmod tempor 
<acronym title="""">acronym text</acronym> incididunt ut labore et dolore magna aliqua. Ut 
<q>quoted text</q> enim ad minim veniam, quis nostrud exercitation <a href=""/"">link text</a> 
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute <del>deleted text</del> 
<ins>inserted text</ins> irure dolor in reprehenderit in voluptate velit esse cillum 
dolore eu fugiat nulla pariatur. Excepteur sint occaecat <code>code text</code> cupidatat 
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<blockquote>
<p>Blockquote. Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat 
cupidatat non proident, sunt in culpa qui officia</p>
</blockquote>

<p><cite><a href=""/"">Cite author with link text</a></cite>, 2008</p>

<h2>Header 2</h2>

<p>Extended paragraph. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint 
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<ol>
<li>Ordered list</li>
<li>Item 2 Consectetur adipisicing elit</li>
<li>Item 3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua</li>
<li>Item 4</li>
<li>Item 5</li>
</ol>

<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.</p>

<h3>Header 3</h3>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<ul>
<li>Unordered list</li>
<li>Consectetur adipisicing elit</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>

<p>Lorem ipsum dolor sit amet,consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<pre><code>pre and code pair{
display:block;
line-height:1.833em;
border-top:0.083em solid #200;
}</code></pre>

<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.</p>

<h4>Header 4</h4>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<dl>
<dt>Definition list</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
</dl>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<table summary=""Table summary"">
<caption>Table Caption</caption>
<thead>
<tr>
<th>Header</th><th>Header</th><th>Header</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content</td><td>1</td><td>a</td>
</tr>
<tr>
<td>Content</td><td>2</td><td>b</td>
</tr>
<tr>
<td>Content</td><td>3</td><td>c</td>
</tr>
<tr>
<td>Content</td><td>4</td><td>d</td>
</tr>
<tr>
<td>Content</td><td>5</td><td>e</td>
</tr>
<tr>
<td>Content</td><td>6</td><td>f</td>
</tr>
</tbody>
</table>

<address>Author text</address>
";

            this.DataContext = this;
        }

【讨论】:

  • 我看到你把水平 StackPanel 放在那里,我马上就知道这不是我想要的。我希望第二个 RichTextBlock 出现在第一个下方,并且当第二个 RichTextBlock 的内容在第一列中结束时,它会溢出到第二列(我希望第二列从第一个 RichTextBlock...
  • 然后,您可以使用单个RichTextBlock 并将其属性设置为静态+动态文本。您也可以使用WrapPanel 代替StackPanel
  • 我现在正在做的就是“静态+动态文本”的思路,但是我想在Xaml编辑器窗口中写静态内容,而不需要复制到代码隐藏中。
  • 您不能在 XAML 中这样做,因为您的动态文本是通过绑定生成的。所以你可以使用转换器将静态文本附加到动态然后绑定文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 2018-09-27
相关资源
最近更新 更多