Я - новичок с wpf, что я хочу отобразить текст в одной строке в wpf textblock., например:
<TextBlock
Text ="asfasfasfa
asdasdasd"
</TextBlock>
TextBlock отображают его в двух значениях по умолчанию строк,
но я хочу это только в одной строке как это "asafsf asfafaf". Я имею в виду, показывают весь текст в одной строке даже в тексте существует больше чем одна строка
что мне делать?
Используйте преобразователь:
<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();
}
}
Вместо этого:
<TextBlock Text="Hello
How Are
You??"/>
Используйте это:
<TextBlock>
Hello
How Are
You??
</TextBlock>
Или это:
<TextBlock>
<Run>Hello</Run>
<Run>How Are</Run>
<Run>You??</Run>
</TextBlock>
или настройте свойство текста в коде, позади которого это:
(в XAML)
<TextBlock x:Name="MyTextBlock"/>
В коде - 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","");