Đối với những người đã thử mọi câu trả lời cho câu hỏi này và vẫn còn gãi đầu về lý do tại sao không ai trong số họ làm việc cho bạn, bạn có thể đã gặp phải một dạng vấn đề tôi gặp phải.
TextBlock.Text
Thuộc tính của tôi nằm trong một ToolTipService.ToolTip
phần tử và nó là cơ sở dữ liệu cho một thuộc tính của một đối tượng có dữ liệu được lấy từ một thủ tục lưu trữ SQL. Bây giờ dữ liệu từ thuộc tính cụ thể này trong thủ tục được lưu trữ đã được lấy từ hàm SQL.
Vì không có gì làm việc cho tôi, tôi đã từ bỏ tìm kiếm của mình và tạo lớp chuyển đổi bên dưới:
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();
}
}
Cuối cùng tôi đã phải sử dụng Enivornment.NewLine
phương pháp từ câu trả lời của @ dparker . Tôi đã hướng dẫn trình chuyển đổi tìm kiếm bất kỳ biểu diễn văn bản nào có thể có của một dòng mới và thay thế nó bằng Environment.NewLine
.
Điều này đã làm việc!
Tuy nhiên, tôi vẫn bối rối về lý do tại sao không có phương thức nào khác làm việc với các thuộc tính cơ sở dữ liệu.
Tôi đã để lại nhận xét về câu trả lời được chấp nhận của @ BobKing :
@BobKing - Điều này dường như không hoạt động trong ToolTipService.ToolTip khi liên kết với một trường có các nguồn cấp dữ liệu được nhúng từ một chuỗi SQL.
Anh trả lời:
@CodeMaverick Nếu bạn liên kết với văn bản với các dòng mới được nhúng, chúng có thể phải là giá trị char 10 thực (hoặc 13) và không phải là các câu lệnh XML. Điều này chỉ khi bạn muốn viết các dòng mới bằng chữ trong các tệp XAML.
Một bóng đèn đã tắt!
Tôi đã đi vào chức năng SQL của mình, thay thế các biểu diễn văn bản của dòng mới bằng ...
CHAR( 13 ) + CHAR( 10 )
... đã gỡ bỏ trình chuyển đổi khỏi TextBlock.Text
ràng buộc của tôi và cứ như thế ... nó hoạt động!