この質問へのすべての答えをしようとしたとされているものに関しては、まだそれらのどれもが、あなたのために働くん理由について頭を悩ま、私はに走った問題の形式に走っている場合があります。
私のTextBlock.Text
プロパティはToolTipService.ToolTip
要素の内部にあり、SQLストアドプロシージャからデータが取得されているオブジェクトのプロパティにデータバインドされていました。ストアドプロシージャ内のこの特定のプロパティからのデータは、SQL関数から取得されていました。
何もうまくいかなかったので、検索をあきらめて、以下のコンバータークラスを作成しました。
public class NewLineConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = string.Empty;
if (value.IsNotNull())
{
s = value.ToString();
if (s.Contains("\\r\\n"))
s = s.Replace("\\r\\n", Environment.NewLine);
if (s.Contains("\\n"))
s = s.Replace("\\n", Environment.NewLine);
if (s.Contains("

"))
s = s.Replace("

", Environment.NewLine);
if (s.Contains("
"))
s = s.Replace("
", Environment.NewLine);
if (s.Contains("
"))
s = s.Replace("
", Environment.NewLine);
if (s.Contains(" "))
s = s.Replace(" ", Environment.NewLine);
if (s.Contains(" "))
s = s.Replace(" ", Environment.NewLine);
if (s.Contains(" "))
s = s.Replace(" ", Environment.NewLine);
if (s.Contains("<br />"))
s = s.Replace("<br />", Environment.NewLine);
if (s.Contains("<LineBreak />"))
s = s.Replace("<LineBreak />", Environment.NewLine);
}
return s;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
私は@dparkerの答えEnivornment.NewLine
からメソッドを使用しなければならなくなりました。改行の可能なテキスト表現を探してそれをに置き換えるようにコンバーターに指示しました。Environment.NewLine
これはうまくいった!
ただし、なぜ他のメソッドのどれもデータバインドされたプロパティで機能しないのかについて、私はまだ困惑しました。
私は@BobKingの受け入れられた回答にコメントを残しました:
@BobKing-SQL sprocから埋め込まれた改行を持つフィールドにバインドする場合、これはToolTipService.ToolTipでは機能しないようです。
彼はこう答えた:
@CodeMaverick新しい行が埋め込まれたテキストにバインドしている場合は、XMLセンチネルではなく、実際の文字10の値(または13の値)である必要があります。これは、XAMLファイルにリテラルの新しい行を記述したい場合のみです。
電球が消えた!
私はSQL関数に入り、改行のテキスト表現を...に置き換えました。
CHAR( 13 ) + CHAR( 10 )
...コンバーターを私のTextBlock.Text
バインディングから削除しました。