Для тих, хто намагався відповісти на це запитання і досі чухає голову щодо того, чому жоден з них не працює на вас, ви, можливо, зіткнулися з формою питання, з яким я зіткнувся.
Моє 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();
}
}
Мені довелося скористатися Enivornment.NewLine
методом з відповіді @ dparker . Я доручив перетворювачу шукати будь-яке можливе текстове зображення нового рядка і замінювати його Environment.NewLine
.
Це спрацювало!
Однак я все ще був здивований, чому жоден з інших методів не працював із властивостями, пов'язаними з даними.
Я залишив коментар до прийнятої відповіді @ BobKing :
@BobKing - Схоже, це не працює в ToolTipService.ToolTip під час прив'язки до поля, у яке канали рядків вбудовані з паростка SQL.
Він відповів:
@CodeMaverick Якщо ви прив'язуєте текст до нових вбудованих рядків, вони, ймовірно, повинні бути справжніми значеннями 10 значень (або 13), а не сторонніми XML. Це лише в тому випадку, якщо ви хочете записати буквально нові рядки у файли XAML.
Лампочка згасла!
Я зайшов у свою функцію SQL, замінив мої текстові подання нових рядків на ...
CHAR( 13 ) + CHAR( 10 )
... зняв конвертер з мого TextBlock.Text
прив'язки, і просто так ... він працював!