उन लोगों के लिए जिन्होंने इस प्रश्न के हर उत्तर की कोशिश की है और अभी भी हैं अपने सिर को खरोंच कि उनमें से कोई भी आपके लिए काम क्यों नहीं करता है, आप शायद मेरे द्वारा चलाए गए मुद्दे के एक रूप में भाग गए होंगे।
मेरी 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();
}
}
मैंने @ dparker के उत्तरEnivornment.NewLine
से विधि का उपयोग करने के लिए समाप्त कर दिया । मैंने कन्वर्टर को निर्देश दिया कि किसी न्यूलाइन के किसी भी संभावित टेक्स्टुअल प्रतिनिधित्व को देखें और उसे बदलेंEnvironment.NewLine
।
यह काम किया!
हालाँकि, मैं अभी भी चिंतित था कि क्यों अन्य तरीकों में से किसी ने डेटाबाउंड गुणों के साथ काम नहीं किया।
मैंने @ BobKing के स्वीकृत उत्तर पर एक टिप्पणी छोड़ दी :
@BusKing - यह ToolTipService.ToolTip में काम करने के लिए प्रतीत नहीं होता है जब किसी क्षेत्र में बाइंडिंग होती है जिसमें लाइन एसक्यूएल स्पोक से एम्बेडेड होती है।
उसने उत्तर दिया:
@CodeMaverick यदि आप नई लाइनों के साथ पाठ के लिए बाध्य कर रहे हैं, तो उन्हें संभवतः वास्तविक 10 मान (या 13) होना चाहिए न कि XML प्रहरी। यह केवल यदि आप XAML फ़ाइलों में शाब्दिक नई पंक्तियाँ लिखना चाहते हैं।
एक प्रकाश बल्ब बंद हो गया!
मैं अपने एसक्यूएल फ़ंक्शन में गया, मेरी नई सूचियों के पाठात्मक प्रतिस्थापनों के साथ ...
CHAR( 13 ) + CHAR( 10 )
... मेरे TextBlock.Text
बंधन से कनवर्टर को हटा दिया , और बस ऐसे ही ... यह काम किया!