【问题标题】:How can I make a paragraph corners round?如何使段落角变圆?
【发布时间】:2016-01-26 20:34:18
【问题描述】:

我有一个富文本框,可以(动态地)向其中添加段落, 我想在添加段落时使段落边框变圆,我该怎么做? 这是我的代码:

    <Grid>
    <RichTextBox x:Name="richTextBox" HorizontalAlignment="Left" Height="315" Margin="10,10,0,0" VerticalAlignment="Top" Width="312" IsReadOnly="True" >
        <FlowDocument x:Name="flowDocument" >

        </FlowDocument>
    </RichTextBox>
</Grid>

我尝试访问段落边框属性,但我做不到。
我的代码中有这样的内容:

Paragraph p = new Paragraph(new Run("Some text"));
p.BorderBrush = Brushes.Black;
p.BorderThickness = new Thickness(1);
//Make the paragraph border round
flowDoucment.Blocks.Add(p);

知道如何设置边框的CornerRadius 属性吗?

【问题讨论】:

    标签: c# wpf border paragraph


    【解决方案1】:

    您可以使用 BlockUIContainer 和其中的另一个 RichTextBox 来实现它。参考下面的代码。

    <RichTextBox>
            <FlowDocument>  
                <BlockUIContainer>
                    <Border BorderThickness="2" BorderBrush="Blue" CornerRadius="8" Padding="3"> 
                        <RichTextBox  BorderThickness="0">
                            <FlowDocument>
                                <Paragraph>This is paragraph with border</Paragraph>
                            </FlowDocument>
                        </RichTextBox>                        
                    </Border>
                </BlockUIContainer>    
            </FlowDocument>
        </RichTextBox>
    

    【讨论】:

    • 我还有一个小问题,按照你的方式做,效果很好,但问题是现在段落之间没有空格,看这张图片:prntscr.com/8vxw32我如何在段落之间插入空格段落?
    • 我用了你的xmal代码,用这段代码生成了10个段落:for (int i = 0; i &lt; 10; i++) { BlockUIContainer con = new BlockUIContainer(); Border b = new Border(); b.BorderThickness = new Thickness(0.5); b.BorderBrush = Brushes.Black; b.CornerRadius = new CornerRadius(5); b.Child = new RichTextBox(new FlowDocument(new Paragraph(new Run(i.ToString())))); con.Child = b; MainFlowDoucment.Blocks.Add(con); }
    • *我用你的 xmal 只是为了运行一些测试,在我使用它之前可能会修改它
    【解决方案2】:

    您可以通过以下方式进行:

    <Border Height="315" Width="312" BorderBrush="Bisque"  VerticalAlignment="Top"  Margin="10,10,0,0" HorizontalAlignment="Left"   BorderThickness="2" CornerRadius="20">
            <RichTextBox x:Name="richTextBox"  Height="315"  VerticalAlignment="Bottom" BorderThickness="0"   Width="312" IsReadOnly="True" >
    
            </RichTextBox>
        </Border>
        <Border Height="315" Width="312" BorderBrush="Bisque"  VerticalAlignment="Top"  Margin="10,10,0,0" HorizontalAlignment="Left"   BorderThickness="2" CornerRadius="20" />
    

    【讨论】:

    • 仍然没有,我只是在富文本框周围有一个边框,而不是在段落周围
    • 对我来说效果很好。见图片。您需要在 broder 标签中指定verticallaignment 和其他属性
    • 是的,但这不是我想要的。我希望段落有边框,而不是富文本框prntscr.com/8vvmhd
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2021-07-24
    • 2011-06-30
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多