【问题标题】:Changing paragraph width in WPF RichTextBox更改 WPF RichTextBox 中的段落宽度
【发布时间】:2013-10-27 12:59:17
【问题描述】:

我在表单上有一个 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);

结果如下:

但我希望它是这样的:

是否有任何简单的方法可以将段落宽度(或外框大小)设置为等于其内容?

【问题讨论】:

  • 我认为是Grid的错,把grid改成canvas,或者将RichTextBox Width属性设置为auto或者确定的大小。
  • 尝试将RichTextBox 包含在StackPanel 中?
  • 感谢您的想法,但更改 RichTextBox 的 Width 属性部分解决了我的问题。我想有许多不同内容的段落,以适当大小的边框为界
  • 创建 Grid.Columns 和 Grid.Rows 并将高度/宽度设置为自动。

标签: c# wpf xaml richtextbox


【解决方案1】:

你可以这样做,让边框不可见

1.XML

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

2.后面的代码

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

【讨论】:

    【解决方案2】:

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

    <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>
            <TextBox x:Name="ShadowArea" Visibility="Hidden" Padding="5,0" FontSize="20" Height="20" Text="Add same string"/>
            <RichTextBox x:Name="TextArea" Width="{Binding ElementName=ShadowArea, Path=ActualWidth}"/>
        </Grid>
    </Window>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多