Dla tych, którzy wypróbowali każdą odpowiedź na to pytanie i wciąż drapią się po głowie, dlaczego żadne z nich nie działa dla ciebie, być może natknąłeś się na jakiś problem, na który wpadłem.
Moja TextBlock.Text
właściwość znajdowała się w ToolTipService.ToolTip
elemencie i była połączona z właściwością obiektu, którego dane były pobierane z procedury składowanej SQL. Teraz dane z tej konkretnej właściwości w ramach procedury składowanej były pobierane z funkcji SQL.
Ponieważ nic dla mnie nie zadziałało, zrezygnowałem z wyszukiwania i utworzyłem klasę konwertera poniżej:
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();
}
}
Skończyło się na tym, że musiałem użyć Enivornment.NewLine
metody z odpowiedzi @ dparker . Poinstruowałem konwerter, aby szukał możliwej reprezentacji tekstowej nowego wiersza i zastąpił go Environment.NewLine
.
To działało!
Nadal jednak byłem zakłopotany, dlaczego żadna z pozostałych metod nie działa z właściwościami bazy danych.
Zostawiłem komentarz do zaakceptowanej odpowiedzi @ BobKing :
@BobKing - Wydaje się, że to nie działa w ToolTipService.ToolTip podczas wiązania z polem, które zawiera źródła linii osadzone z sproc SQL.
Odpowiedział:
@CodeMaverick Jeśli wiążesz się z tekstem z osadzonymi nowymi wierszami, prawdopodobnie powinny to być prawdziwe wartości char 10 (lub 13), a nie wartowniki XML. Dzieje się tak tylko wtedy, gdy chcesz pisać dosłownie nowe wiersze w plikach XAML.
Żarówka zgasła!
Przeszedłem do mojej funkcji SQL, zastąpiłem moje reprezentacje tekstowe znaków nowej linii ...
CHAR( 13 ) + CHAR( 10 )
... usunąłem konwerter z mojego TextBlock.Text
wiązania i po prostu ... zadziałało!