สำหรับผู้ที่ได้ลองทุกคำตอบสำหรับคำถามนี้และยังคงเกาหัวของพวกเขาว่าทำไมพวกเขาไม่ทำงานให้คุณคุณอาจพบปัญหาที่ฉันพบ
TextBlock.Text
คุณสมบัติของฉันอยู่ภายในToolTipService.ToolTip
องค์ประกอบและเป็น databound ไปยังคุณสมบัติของวัตถุที่มีการดึงข้อมูลจากขั้นตอนการจัดเก็บ 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 sproc
เขาตอบด้วย:
@CodeMaverick หากคุณผูกพันกับข้อความที่มีบรรทัดใหม่ฝังอยู่พวกเขาน่าจะเป็นค่า char 10 (หรือ 13's) และไม่ใช่ XML sentinels นี่คือถ้าคุณต้องการเขียนบรรทัดใหม่ตามตัวอักษรในไฟล์ XAML
หลอดไฟดับลง!
ฉันเข้าสู่ฟังก์ชัน SQL ของฉันแทนที่การแสดงข้อความของบรรทัดใหม่ด้วย ...
CHAR( 13 ) + CHAR( 10 )
... นำตัวแปลงออกจากการTextBlock.Text
ผูกมัดของฉันและเช่นนั้น ... มันใช้ได้!