如何在wpf文本块中的一行中显示文本

时间:2010-01-22 06:40:30

标签: wpf textblock

我是wpf的新手,我想在wpf文本块中的一行显示文本。 例如:

<TextBlock 
    Text ="asfasfasfa
    asdasdasd"
</TextBlock>

TextBlock默认显示两行,

但我只想在一行中使用“asafsf asfafaf”。我的意思是在文本中显示所有文本,即使文本中有多行    我该怎么办?

2 个答案:

答案 0 :(得分:16)

使用转换器:

    <TextBlock Text={Binding Path=TextPropertyName,
Converter={StaticResource SingleLineTextConverter}}

SingleLineTextConverter.cs:

public class SingleLineTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string s = (string)value;
        s = s.Replace(Environment.NewLine, " ");
        return s;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:6)

而不是:

            <TextBlock Text="Hello
                How Are
                You??"/>

使用此:

            <TextBlock>
                Hello
                How Are
                You??
            </TextBlock>

或者这个:

            <TextBlock>
                <Run>Hello</Run> 
                <Run>How Are</Run> 
                <Run>You??</Run>
            </TextBlock>

或在代码后面设置Text属性,如下所示:

(In XAML)

            <TextBlock x:Name="MyTextBlock"/>

(In code - c#)

            MyTextBlock.Text = "Hello How Are You??"

代码隐藏方法的优势在于您可以在设置之前格式化文本。 示例:如果从文件中检索文本并且您想要删除任何回车换行符,则可以这样做:

 string textFromFile = System.IO.File.ReadAllText(@"Path\To\Text\File.txt");
 MyTextBlock.Text = textFromFile.Replace("\n","").Replace("\r","");