文本框:混合颜色和数据绑定

时间:2016-09-17 20:22:55

标签: c# wpf data-binding textbox formatting

亲爱的stackoverflow社区!

我试图找到解决问题的方法,但我找不到任何问题。

问题:

我有一个绑定到字符串的多行文本框。每当我在字符串中添加内容时,我想更改新部件的颜色

最后应该看起来像这样:

Textbox:

(你明白了)

到目前为止,这是我的文本框:

 <TextBox x:Name="ChatTextBox" Text="{Binding MyStringProperty , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap"
             AcceptsReturn="True"                 
             IsReadOnly="True"></TextBox>
            </ScrollViewer>

在搜索解决方案时,我看到了一些使用Inlines的示例,但对我而言,Inlines看起来不是动态的。

<TextBlock TextWrapping="Wrap">
     <TextBlock.Inlines>
         <Run Foreground="Blue" Text="The first line in the Textbox is blue"/>
         <Run Foreground="Green" Text="then I add this part and it is green"/>
         <Run Foreground="Orange" Text="and this part is orange" />
     </TextBlock.Inlines>
</TextBlock>

我不一定要绑定到字符串,如果需要任何其他对象(或列表),这不会有问题。

非常感谢任何帮助!提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用RichTextBox控件并使用段落和运行,检查:

    <RichTextBox x:Name="richTextBox" Margin="10,128.08,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">
        <FlowDocument>
            <Paragraph>
                <Run Text="The first line in the Textbox is blue" Foreground="Blue"/>
                <Run Text="{Binding Text, ElementName=textBox}" Foreground="Brown"/>
            </Paragraph>
            <Paragraph>
                <Run Text="then I add this part and it is green" Foreground="Green"/>
            </Paragraph>
            <Paragraph>
                <Run Text="and this part is orange" Foreground="Orange"/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>