2012-05-03 8 views
5

में अत्यधिक एक्सएएमएल मार्कअप आकार मेरे पास चांदी की रोशनी 5 एप्लिकेशन में एक बहुत ही सरल RichTextBox नियंत्रण है।सिल्वरलाइट रिचटेक्स्टबॉक्स

<RichTextBox x:Name="rtbControl" 
    Height="Auto" 
    ContentChanged="rtbControl_ContentChanged" /> 

के रूप में डेटा बदल गया है, मैं इतनी के रूप में एक स्थानीय चर में यह कब्जा:

private void rtbControl_ContentChanged(object sender, ContentChangedEventArgs e) 
    { 
     RichTextContent = rtbControl.Xaml; 
    } 

सभी काम करता है। हालांकि, अगर मैं केवल कुछ शब्दों में टाइप करता हूं और <Paragraph> मार्कअप की जांच करता हूं, तो यह बहुत बड़ा है! एक स्निपेट नीचे है। मार्कअप में सभी टाइपोग्राफी सामान रखने का कोई तरीका नहीं है? यह क्यों है और इसकी आवश्यकता है? क्या इसे हटाने का कोई तरीका है?

<Section xml:space="preserve" HasTrailingParagraphBreakOnPaste="False" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
<Paragraph FontSize="11" FontFamily="Segoe UI" Foreground="#FF000000" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" 
CharacterSpacing="0" Typography.AnnotationAlternates="0" Typography.EastAsianExpertForms="False" Typography.EastAsianLanguage="Normal" 
Typography.EastAsianWidths="Normal" Typography.StandardLigatures="True" Typography.ContextualLigatures="True" 
Typography.DiscretionaryLigatures="False" Typography.HistoricalLigatures="False" Typography.StandardSwashes="0" Typography.ContextualSwashes="0" 
Typography.ContextualAlternates="True" Typography.StylisticAlternates="0" Typography.StylisticSet1="False" Typography.StylisticSet2="False" 
Typography.StylisticSet3="False" Typography.StylisticSet4="False" Typography.StylisticSet5="False" Typography.StylisticSet6="False" Typography.StylisticSet7="False" 
Typography.StylisticSet8="False" Typography.StylisticSet9="False" Typography.StylisticSet10="False" Typography.StylisticSet11="False" 
Typography.StylisticSet12="False" Typography.StylisticSet13="False" Typography.StylisticSet14="False" Typography.StylisticSet15="False" 
Typography.StylisticSet16="False" Typography.StylisticSet17="False" Typography.StylisticSet18="False" Typography.StylisticSet19="False" 
Typography.StylisticSet20="False" Typography.Capitals="Normal" Typography.CapitalSpacing="False" Typography.Kerning="True" Typography.CaseSensitiveForms="False" 
Typography.HistoricalForms="False" Typography.Fraction="Normal" Typography.NumeralStyle="Normal" Typography.NumeralAlignment="Normal" Typography.SlashedZero="False" 
Typography.MathematicalGreek="False" Typography.Variants="Normal" TextOptions.TextHintingMode="Fixed" TextOptions.TextFormattingMode="Ideal" 
TextOptions.TextRenderingMode="Auto" TextAlignment="Left" LineHeight="0" LineStackingStrategy="MaxHeight"><Run>was it a </Run><Run TextDecorations="Underline">bad 
</Run><Run>blah? or </Run></Paragraph></section> 
+0

ओह, यह बड़ा है :(मुझे लगता है कि यह सुनिश्चित करने के लिए दृढ़ता की आवश्यकता है कि आपको सटीक स्वरूपण मिल जाए। – jv42

+0

आप क्या करने की कोशिश कर रहे हैं? शायद आप टेक्स्ट का उपयोग कर सकते हैं, या टेक्स्ट गुणों का चयन कर सकते हैं? यह http: // msdn देखें .microsoft.com/fr-fr/लाइब्रेरी/ff426926% 28v = बनाम.9 5% 29.aspx आधिकारिक नमूना – jv42

+0

मैं उपयोगकर्ताओं को दस्तावेज़ के टुकड़े बनाने की क्षमता प्रदान करता हूं और मुझे उन्हें समृद्ध टेक्स्ट स्वरूपण क्षमताओं की आवश्यकता होती है। उपयोगकर्ता इनपुट प्राप्त होता है डेटाबेस में धक्का दिया। मुझे जो भी प्रारूपण करना है उसे कैप्चर करने की आवश्यकता है। जिस तरह से यह है, उपयोगकर्ता 4 शब्दों में 4 शब्दों में टाइप कर सकता है और यह पहले से ही 4000 से अधिक वर्णों के पाठ टाइप कर सकता है। – tsiorn

उत्तर

4

मैंने सोचा कि मैं दूसरों की मदद करने के लिए अपना समाधान साझा करूंगा ... यह कई महीनों के लिए जगह पर रहा है और मैंने किसी भी दुष्प्रभाव को देखा है।

मैंने टाइपोग्राफी विशेषताओं को हटाने में सहायता के लिए कुछ विस्तार विधियां बनाई हैं।

public static class RichTextBoxExtensions { 
     // <summary> 
     /// Removes any xml tag with the prefix given from a string 
     /// </summary> 
     /// <param name="XMLString"></param> 
     /// <param name="TagPrefix"></param> 
     /// <returns></returns> 
     public static string RemoveXMLAttributesFromNode(this string XMLString, string prefix) 
     { 
      //Match [Prefix][any number of Not =][=]["][any number of Not "]["][ ] <-must have space!!! 
      string replace = prefix + "[^\\=]*=\"[^\"]*\" "; 
      return Regex.Replace(XMLString, replace, string.Empty); 
     } 
     /// <summary> 
     /// Removes any xml tag with prefixed by an element in unWanted 
     /// </summary> 
     /// <param name="XMLString"></param> 
     /// <param name="TagPrefix"></param> 
     /// <returns></returns> 
     public static string RemoveXMLAttributesFromNode(this string XMLString, List<string> unWanted) 
     { 

      foreach (string prefix in unWanted) 
      { 
       //Match [Prefix][any number of Not =][=]["][any number of Not "]["][ ] <-must have space!!! 
       string replace = prefix + "[^\\=]*=\"[^\"]*\" "; 
       XMLString = Regex.Replace(XMLString, replace, string.Empty); 
      } 
      return XMLString; 
     } 

इसके बाद, सही इससे पहले कि मैं डेटाबेस के लिए अपने स्ट्रिंग बचाने के लिए, मुझे बुरा विशेषताओं के रूप में तो निकालें:

 List<string> badAttributes = new List<string>(); 
     badAttributes.Add("Typography"); 
     var ffText = ffi.FreeFormText == null ? null : ffi.FreeFormText.RemoveXMLAttributesFromNode(badAttributes); 

मैं इन विशेषताओं हटाने के बाद किसी भी मुद्दे आरटीएफ जब फिर से प्रतिपादन नहीं देखा है । उम्मीद है कि यह समाधान किसी की मदद करता है!

+0

धन्यवाद !!! निश्चित रूप से इसकी आवश्यकता है। बेवकूफ आरटीबी "उन्नयन" –

संबंधित मुद्दे