0

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を改行としてディスプレイで機能させようとしています。

4

1 に答える 1

0

ここで答えを参照してください:

文字列属性の改行

あなたの場合、あなたがする必要があることは、\ r \ nを含む文字列データをエンコードされたエンティティ、すなわちとに変換するコンバーター(IValueConverterを実装するもの)を書くことです。次に、バインディングでそのコンバーターを使用します。

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 ....(この例では、TextBlockが何であるかわからないため、Windowを使用しました)。

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

<TextBlock Height="Auto" TextWrapping="Wrap" Name="Blurb" Text="{Binding Bio, Converter={StaticResource strconv}}" />
于 2012-08-16T09:10:56.747 に答える