WPF根据内容大小RichTextBox

时间:2017-03-17 05:34:23

标签: c# wpf

<DataTemplate x:Key="myContinuousTemplate">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" MaxWidth="300"/>
                    <ColumnDefinition Width="20" />
                </Grid.ColumnDefinitions>
                    <messenger:BindableRichTextBox Grid.Column="1" 
                             MaxWidth="300"
                             Style="{StaticResource richTextBoxStyle}" TextChanged="BindableRichTextBox_TextChanged">
                    <messenger:BindableRichTextBox.Document>
                        <MultiBinding Converter="{StaticResource searchTextHighlightConverter}">
                            <Binding RelativeSource="{RelativeSource Self}" Mode="OneTime"/>
                            <Binding Path="message" />
                            <Binding Path="message_sn" />
                            <Binding Mode="TwoWay" ElementName="conversationControl" Path="SearchText" />
                            <Binding Mode="TwoWay" ElementName="conversationControl" Path="MatchedMessageSN" />
                        </MultiBinding>
                    </messenger:BindableRichTextBox.Document>
                </messenger:BindableRichTextBox>
        </DataTemplate>

正在实施消息。 我想获取数据模板的richtextbox属性。

最终目标是通过输入的字符更改richbox的长度。

例如,就像Facebook Messenger一样,我希望延伸到字母的长度,但是当它达到最大长度时,我想垂直拉伸它。

2 个答案:

答案 0 :(得分:0)

将Horizo​​ntalAlignment和VerticalAlignment设置为Stretch以外的值(默认值)。这将使TextBox缩小以适合其内容。希望它会有所帮助

答案 1 :(得分:0)

尝试将您的richtexbox放在stackpanel中,我尝试使用代码,并按照您的要求进行操作:

     <StackPanel>
        <RichTextBox/>
        <RichTextBox/>
        <RichTextBox/>
        <RichTextBox/>
        <RichTextBox/>
        <RichTextBox/>
    </StackPanel>

您想要获得的行为是标准行为。检查您的richtextbox的样式可能存在一些错误。