在WPF RichTextBox中更改段落宽度

时间:2013-10-18 15:49:47

标签: c# wpf xaml richtextbox

我在表单上有一个RichTextBox:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <RichTextBox x:Name="TextArea"/>
    </Grid>
</Window>

在运行时,我使用以下代码添加带边框的段落:

Paragraph p1 = new Paragraph();
Inline hello = new Run("Hello") { FontSize = 14 };
Inline world = new Run("World") { FontSize = 20, Foreground = new SolidColorBrush(Colors.Red) };
Inline helloWorld = new Run(Environment.NewLine + "Hello World");
p1.Inlines.Add(hello);
p1.Inlines.Add(world);
p1.Inlines.Add(helloWorld);
p1.BorderThickness = new Thickness(1);
p1.BorderBrush = new SolidColorBrush(Colors.SkyBlue);
p1.Padding = new Thickness(2);
this.TextArea.Document.Blocks.Add(p1);

结果如下:

Current picture

但我希望它是这样的:

Desired picture

enter image description here

有没有简单的方法来设置段落宽度(或外部框架大小)等于其内容?

2 个答案:

答案 0 :(得分:0)

你可以这样做,这样边框将是不可见的

1.XML

   <Grid>
       <RichTextBox x:Name="TextArea" BorderThickness="0" Padding="0"/>
   </Grid>

2.Code in behind

  TextArea.BorderThickness = new Thickness(0);//No border
  TextArea.Padding = new Thickness(0); //text padding
  TextArea.Margin = new Thickness(10); // margin of txtbox

答案 1 :(得分:0)

TextBox可以获得自己的内容宽度。 RichTextBox无法获取自己的内容宽度。 所以绑定透明的TextBox宽度。 但这个宽度并没有那么正确。 你需要更多的设计。(例如,准备多个TextBox?)

readRDS