Как отобразить текст одной строкой в ​​текстовом блоке wpf - PullRequest
7 голосов
/ 22 января 2010

Я новичок с wpf, что я хочу, чтобы отобразить текст в одной строке в текстовом блоке wpf. eg.:

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

TextBlock отображать его в две строки по умолчанию,

но я хочу, чтобы это было только в одной строке, как этот "asafsf asfafaf". Я имею в виду показать весь текст в одной строке, даже если в тексте более одной строки
что мне делать?

Ответы [ 2 ]

16 голосов
/ 22 января 2010

Использовать конвертер:

    <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();
    }
}
6 голосов
/ 22 января 2010

Вместо этого:

            <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","");
...