Per coloro che hanno provato tutte le risposte a questa domanda e si stanno ancora grattando la testa sul perché nessuno di loro lavora per te, potresti esserti imbattuto in una forma del problema che ho riscontrato.
La mia TextBlock.Text
proprietà si trovava all'interno di un ToolTipService.ToolTip
elemento ed era collegata a una proprietà di un oggetto i cui dati venivano estratti da una procedura memorizzata SQL. Ora i dati di questa particolare proprietà all'interno della procedura memorizzata venivano estratti da una funzione SQL.
Dato che nulla aveva funzionato per me, ho rinunciato alla mia ricerca e ho creato la seguente classe di convertitori:
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();
}
}
Ho finito per usare il Enivornment.NewLine
metodo dalla risposta di @dparker . Ho chiesto al convertitore di cercare ogni possibile rappresentazione testuale di una nuova riga e di sostituirla con Environment.NewLine
.
Questo ha funzionato!
Tuttavia, ero ancora perplesso sul motivo per cui nessuno degli altri metodi ha funzionato con proprietà databound.
Ho lasciato un commento sulla risposta accettata di @ BobKing :
@BobKing: questo non sembra funzionare in ToolTipService.ToolTip quando si associa a un campo che ha i feed di linea incorporati da uno sproc SQL.
Ha risposto con:
@CodeMaverick Se stai vincolando il testo con le nuove righe incorporate, probabilmente dovrebbero essere valori di char 10 reali (o 13) e non le sentinelle XML. Questo è solo se vuoi scrivere nuove righe letterali nei file XAML.
Una lampadina si è spenta!
Sono entrato nella mia funzione SQL, ho sostituito le mie rappresentazioni testuali di newline con ...
CHAR( 13 ) + CHAR( 10 )
... rimosso il convertitore dalla mia TextBlock.Text
associazione, e proprio così ... ha funzionato!