WPF:获取RichTextBox中一行的确切大小

时间:2013-02-08 16:13:58

标签: wpf richtextbox

我想在RichTextBox的每一行上放置控件 - 类似的东西:

---------------------------------
| Control1 | This is a multiline|
| Control2 | Richtextbox and I  |
| Control3 | want to place a    |
| Control4 | control excactly   |
| Control5 | beside each line.  |
---------------------------------

所以我想在每行的左边放置一个Control。我想我必须找出每条线的实际高度并相应地放置控件。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

以下代码将满足您的需求。如果不能解决,请检查并告诉我。

<RichTextBox >
            <RichTextBox.Template>
                <ControlTemplate>
                    <StackPanel>
                        <TextBlock Text="My Text on test" />
                        <TextBlock Text="My Text on test1" />
                    </StackPanel>
                </ControlTemplate>
            </RichTextBox.Template>
        </RichTextBox>

我说过要使用richtextbox控件模板来实现你的需求。在控件模板内部,您可以设计控件,无论它们应该是什么。我在Stackpanel中放置了两个文本框的示例。根据您的要求,如果我的猜测有效,以下更新的解决方案将为您提供帮助。

<RichTextBox >
            <RichTextBox.Template>
                <ControlTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="60"></ColumnDefinition>
                            <ColumnDefinition Width="100"></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                    <StackPanel Grid.Column="0" Grid.Row="0">
                            <Button Content="Control1" Width="60"/>
                            <Button Content="Control2" Width="60"/>
                            <Button Content="Control3" Width="60"/>
                            <Button Content="Control4" Width="60"/>
                        </StackPanel>
                        <TextBlock Grid.Column="1" Grid.Row="0" TextWrapping="Wrap" FontSize="13" Text="This is a multiline Richtextbox and I want to place a  control excactly  beside each line.  " />
                    </Grid>
                </ControlTemplate>
            </RichTextBox.Template>
        </RichTextBox>