Bagi mereka yang telah mencoba setiap jawaban untuk pertanyaan ini dan masih menggaruk-garuk kepala mengapa tidak ada yang bekerja untuk Anda, Anda mungkin telah berlari ke dalam bentuk masalah yang saya temui.
TextBlock.Text
Properti saya ada di dalam ToolTipService.ToolTip
elemen dan itu databound ke properti objek yang datanya ditarik dari prosedur tersimpan SQL. Sekarang data dari properti khusus ini dalam prosedur tersimpan diambil dari fungsi SQL.
Karena tidak ada yang berhasil untuk saya, saya berhenti mencari dan membuat kelas konverter di bawah:
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();
}
}
Saya akhirnya harus menggunakan Enivornment.NewLine
metode dari jawaban @ dparker . Saya menginstruksikan konverter untuk mencari kemungkinan representasi tekstual dari baris baru dan menggantinya dengan Environment.NewLine
.
Ini berhasil!
Namun, saya masih bingung mengapa tidak ada metode lain yang bekerja dengan properti databound.
Saya meninggalkan komentar pada jawaban yang diterima @ BobKing :
@ BobKing - Ini sepertinya tidak berfungsi di ToolTipService.ToolTip ketika mengikat ke bidang yang memiliki garis feed tertanam dari SQL sproc.
Dia menjawab dengan:
@CodeMaverick Jika Anda mengikat ke teks dengan baris baru yang disematkan, mereka mungkin harus benar-benar nilai char 10 (atau 13's) dan bukan sentinel XML. Ini hanya jika Anda ingin menulis baris baru secara literal dalam file XAML.
Bola lampu meledak!
Saya masuk ke fungsi SQL saya, menggantikan representasi tekstual dari baris baru dengan ...
CHAR( 13 ) + CHAR( 10 )
... menghapus konverter dari TextBlock.Text
ikatan saya , dan begitu saja ... itu berhasil!