Игнорирование при сохранении разрывов строк в WPF TextBox - PullRequest
4 голосов
/ 02 февраля 2012

Я хочу представить строку, содержащую разрывы строк в TextBox, но я хочу, чтобы TextBox отображал ее как одну строку.Удаление разрывов строки не вариант;они должны быть сохранены также и после редактирования текста.

В приведенном ниже примере при вводе текста в первом текстовом поле текст должен быть представлен во втором текстовом поле одной строкой.При редактировании текста во втором TextBox необходимо сохранить разрывы строк в первом TextBox.

Кто-нибудь знает, возможно ли это?

<Grid Background="AliceBlue">
  <Grid.RowDefinitions>
     <RowDefinition Height="100"/>
     <RowDefinition Height="100"/>
  </Grid.RowDefinitions>

  <TextBox x:Name="FirstTextBox"
     AcceptsReturn="True"
     TextWrapping="Wrap"
     Text="{Binding MyString}" 
     Width="150"/>

  <TextBox x:Name="SecondTextBox"
     Grid.Row="1"
     AcceptsReturn="False"
     TextWrapping="NoWrap"
     Text="{Binding MyString}"
     VerticalAlignment="Top"/>
</Grid> 

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Я создал конвертер привязок, который работает для моего сценария: разрывы строк заменяются символом пробела нулевой ширины в Юникоде (U + 200B):

public class IgnoreLinebreaksConverter : IValueConverter
{
    private const string Sub = " \u200B";
    private const string Lb = "\r\n";

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = (string)value;
        return string.IsNullOrEmpty(s) ? s : Regex.Replace(s, Lb, Sub);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = (string)value;
        return string.IsNullOrEmpty(s) ? s : Regex.Replace(s, Sub, Lb);
    }
}
0 голосов
/ 02 февраля 2012

Вы можете кодировать текстовые разрывы строк с помощью \n (используя Binding.Converter), затем вы можете заменить эти последовательности фактическими переносами строк, если необходимо (в ConvertBack), в терминах юзабилити, что было бы сомнительно, хотя.

...