WPF中的换行符绑定文本块

时间:2012-08-15 23:46:02

标签: wcf windows-phone-7 binding textblock

我从上一页中提取数据,该数据是来自wcf服务的列表框中的选定项目。

我遇到的错误是文本块没有在我的数据中读取格式。

这是从上一页带来数据的代码

private void LoadPlayer()
    {
        FrameworkElement root1 = Application.Current.RootVisual as FrameworkElement;
        var currentPlayer = root1.DataContext as PlayerProfile;
        _SelectedPlayer = currentPlayer;
    }

这是xaml

<TextBlock Height="Auto" TextWrapping="Wrap" Name="Blurb" Text="{Binding Bio}" xml:space="preserve" />

具体来说,我试图将\ r \ n作为换行符在我的显示器中工作。

1 个答案:

答案 0 :(得分:0)

见答案:

Newline in string attribute

在您的情况下,您需要编写一个转换器(实现IValueConverter的东西),将包含\ r \ n的字符串数据转换为编码实体,即  和 。然后在绑定上使用该转换器。

public class EncodeCRLFConverter : IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  {
    string stringtoconvert = value as string;

    if (input != null))
    {
        // Note there are different ways to do the replacement, this is
        // just a very simplistic method.

        stringtoconvert = stringtoconvert.Replace( "\r", "&#x0d;" );
        stringtoconvert = stringtoconvert.Replace( "\n", "&#x0a;" );

        return stringtoconvert;
    }
    return null;
  }

  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  {
    throw new Exception("The method or operation is not implemented.");
  }
}

在某处创建转换器的实例...例如。通常在.Resources ....(在这个例子中,我刚刚使用了Window,因为我不知道你的TextBlock在里面是什么)。

<Window.Resources>
<EncodeCRLFConverter x:Key="strconv"/>
<Window.Resources>

<TextBlock Height="Auto" TextWrapping="Wrap" Name="Blurb" Text="{Binding Bio, Converter={StaticResource strconv}}" />