मैं डब्ल्यूपीएफ रिचटेक्स्टबॉक्स का उपयोग कर एक वर्ड प्रोसेसर-टाइप ऐप पर काम कर रहा हूं। मैं SelectionChanged घटना का उपयोग कर रहा है क्या फ़ॉन्ट, फ़ॉन्ट वजन, शैली, आदि निम्नलिखित कोड का उपयोग कर RTB में वर्तमान चयन की है यह पता लगाने की:डब्ल्यूपीएफ रिचटेक्स्टबॉक्स चयन चेंज प्रदर्शन
private void richTextBox_SelectionChanged(object sender, RoutedEventArgs e)
{
TextSelection selection = richTextBox.Selection;
if (selection.GetPropertyValue(FontFamilyProperty) != DependencyProperty.UnsetValue)
{
//we have a single font in the selection
SelectionFontFamily = (FontFamily)selection.GetPropertyValue(FontFamilyProperty);
}
else
{
SelectionFontFamily = null;
}
if (selection.GetPropertyValue(FontWeightProperty) == DependencyProperty.UnsetValue)
{
SelectionIsBold = false;
}
else
{
SelectionIsBold = (FontWeights.Bold == ((FontWeight)selection.GetPropertyValue(FontWeightProperty)));
}
if (selection.GetPropertyValue(FontStyleProperty) == DependencyProperty.UnsetValue)
{
SelectionIsItalic = false;
}
else
{
SelectionIsItalic = (FontStyles.Italic == ((FontStyle)selection.GetPropertyValue(FontStyleProperty)));
}
if (selection.GetPropertyValue(Paragraph.TextAlignmentProperty) != DependencyProperty.UnsetValue)
{
SelectionIsLeftAligned = (TextAlignment)selection.GetPropertyValue(Paragraph.TextAlignmentProperty) == TextAlignment.Left;
SelectionIsCenterAligned = (TextAlignment)selection.GetPropertyValue(Paragraph.TextAlignmentProperty) == TextAlignment.Center;
SelectionIsRightAligned = (TextAlignment)selection.GetPropertyValue(Paragraph.TextAlignmentProperty) == TextAlignment.Right;
SelectionIsJustified = (TextAlignment)selection.GetPropertyValue(Paragraph.TextAlignmentProperty) == TextAlignment.Justify;
}
}
SelectionFontFamily, SelectionIsBold, आदि प्रत्येक एक हैं OneWayToSource के बाध्यकारी मोड के साथ होस्टिंग UserControl पर निर्भरता प्रॉपर्टी। वे एक व्यूमोडेल से बंधे हैं, जो बदले में एक दृश्य है जिसमें फ़ॉन्ट कॉम्बो बॉक्स, बोल्ड, इटैलिक, अंडरलाइन इत्यादि हैं। जब आरटीबी में चयन बदलता है, तो उन नियंत्रणों को प्रतिबिंबित करने के लिए भी अपडेट किया जाता है जो कि चुना गया है। यह बहुत अच्छा काम करता है।
दुर्भाग्य से, यह प्रदर्शन की कीमत पर काम करता है, जो बड़ी मात्रा में टेक्स्ट चुनते समय गंभीर रूप से प्रभावित होता है। सबकुछ चुनना काफी धीमा है, और फिर चयन को बदलने के लिए Shift + तीर कुंजी जैसे कुछ का उपयोग करना बहुत धीमा है। स्वीकार्य होने के लिए बहुत धीमी है।
क्या मैं कुछ गलत कर रहा हूं? प्रक्रिया में आरटीबी के प्रदर्शन को मारने के बिना आरटीबी में चयनित पाठ के गुणों को प्रतिबिंबित करने के लिए बाध्य नियंत्रण के गुणों को प्रतिबिंबित करने के बारे में कोई सुझाव हैं?
आपके कोड के लिए धन्यवाद, इसने वास्तव में गति को बढ़ाया जैसा आपने कहा था, लेकिन आरटीबी में एक अच्छी मात्रा में टेक्स्ट होने पर यह अभी भी बहुत कम है (15 पेज या उससे भी ज्यादा कहें)। जब आप सभी टेक्स्ट को हाइलाइट करते हैं और पंक्तियों/शब्दों को अचयनित करने के लिए तीर कुंजियों का उपयोग करते हैं, तो यह अभी भी पर्याप्त है कि यह काफी ध्यान देने योग्य है। तो यह बेहतर है, लेकिन अभी भी वहाँ नहीं है। क्या ऐसा कुछ थ्रेड में लगाया जा सकता है? – Scott
मैंने आपको कुछ जवाब देने के लिए अपना जवाब बढ़ा दिया है कि आगे की गति के लिए क्या आवश्यक होगा, और कोई धागा सहायक होगा या नहीं। –
उत्कृष्ट सलाह, धन्यवाद रे। मैं आपको अधिक विस्तार से सुझावों को देखूंगा। – Scott