2009-03-31 18 views
5

मैं एमवीवीएम पैटर्न का उपयोग कर रहा हूं और मेरे मॉडल व्यू में स्ट्रिंग टाइप प्रॉपर्टी है।डब्ल्यूपीएफ टेक्स्टब्लॉक गतिशील बोल्ड और इटालिक भागों

स्ट्रिंग HTML टैग निम्नलिखित हो सकते हैं:

<b>, </b>, <i>, </i> 

मैं सामान्य, बोल्ड या इटैलिक में होने की TextBlock में पाठ के कुछ भागों बनाने की जरूरत है।

फिलहाल मैं वैकल्पिक हल, एक सहायक विधि है कि इस तरह काम करता है बनाया है: भागों

  • बनाता भागो वर्ग के उदाहरण

  • टैग पर निर्भर करता है में

    1. ब्रेक एचटीएमएल स्ट्रिंग, FontWeight या FontStyle गुण सेट करता है

    2. टेक्स्टब्लॉक की इनलाइन पर रन क्लास का उदाहरण जोड़ता है एस संग्रह

    यह समाधान काम करता है, लेकिन यह एमवीवीएम पैटर्न के साथ संगत नहीं है।

    मैं कन्वर्टर्स का उपयोग करने के बारे में सोच रहा था, लेकिन मुझे यकीन नहीं है कि टेक्स्टब्लॉक की संपत्ति को बाध्यकारी करना चाहिए।

    आपको क्या लगता है, यह समस्या हल कैसे हो सकती है?

  • उत्तर

    1

    इस समस्या के लिए मैंने पाया सबसे आसान समाधान।

    BindableRichTextBox उपयोग करने के लिए है, कि http://www.shawnduggan.com/?p=54

    1. कन्वर्टर्स का प्रयोग में पाया जा सकता XAML करने के लिए HTML स्ट्रिंग कन्वर्ट और फिर FlowDocument वस्तु में आने से पहले

    2. बाइंड दस्तावेज़ BindableRichTextBox

    3. को RichTextBox को टेक्स्टब्लॉक की तरह दिखें (फोकस करने योग्य = "झूठा", सीमाचित्र = "0", बॉर्डरब्रश = "व्हाइट" .... आदि)

    4

    मैंने जो कुछ किया है, वह पहले कंटेंट कंट्रोल का उपयोग करना है, जिसमें वैल्यू कन्वर्टर के साथ स्ट्रिंग से जुड़ी सामग्री प्रॉपर्टी है जो गतिशील रूप से बनाए गए टेक्स्टब्लॉक को लौटाती है। अन्य समाधान यहां पाए जा सकते हैं, जिनमें this one शामिल हैं।

    +0

    ContentControl और BindableRun का प्रयास करेगा। धन्यवाद! –

    +0

    महान समाधान! खैर, ठीक है, मैं 'इनलाइन' संपत्ति से जुड़ने में सक्षम होना पसंद करूंगा, लेकिन इस तरह के समर्थन की अनुपस्थिति में, यह वास्तव में एक अच्छा विकल्प है। यह ध्यान देने योग्य भी है कि 'रन' की 'टेक्स्ट' प्रॉपर्टी अब एक निर्भरता संपत्ति है, इसलिए बाइंडबलरुन की आवश्यकता के बिना बाध्य किया जा सकता है। –

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