2009-08-10 13 views
10

क्या FlowDocument में पैराग्राफ दिखाने या छिपाने के लिए डेटाबेस का उपयोग करने का कोई तरीका है? (मैं एमवीवीएम का उपयोग करना चाहता हूं, लेकिन मेरे दृश्य के रूप में फ़्लो डॉक्यूमेंट के साथ।)फ़्लो डॉक्यूमेंट में पैराग्राफ कैसे छिपा सकता हूं?

अनुच्छेद में दृश्यता संपत्ति नहीं है। मुझे यकीन नहीं है कि और क्या देखना है।

उत्तर

0

विकल्प मैं के बारे में सोच सकते हैं ...

  1. अनुच्छेद के सामग्री छुपाएं (अपने मॉडल में पैरा शामिल न करें)
  2. पैरा (या इसके आधार वर्गों में से एक) का विस्तार और प्रदान करते हैं IsVisible
+2

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

2

के लिए एक निर्भरता संपत्ति मैं ठीक उसी समस्या थी और एक InlineUIContainer में ListItem की सामग्री लपेटकर, इसलिए तरह से इसे सफलतापूर्वक संभाला:

<ListItem> 
    <Paragraph> 
     <InlineUIContainer> 
     <TextBlock x:Name="HideMe" Visibility="Collapsed"> 
      <Hyperlink NavigateUri="...">Components</Hyperlink> 
     </TextBlock> 
     </InlineUIContainer> 
    </Paragraph> 
    </ListItem> 

यहां से आप कोड में या बाध्यकारी के माध्यम से "HideMe" की दृश्यता सेट कर सकते हैं।

2

मैं क्रिस Bova का जवाब करने की कोशिश की है, लेकिन यह एक जोड़े समस्या नहीं थी:

  1. पाठ चयन काम नहीं किया सही
  2. पाठ के अंदर एक पैरा की तरह प्रवाह नहीं किया

मेरे समाधान प्रवाह दस्तावेज़ से अनुच्छेद जोड़ने और निकालना था।

कदम हैं:

  1. नाम प्रवाह दस्तावेज़ (यानी FlowDocument)
  2. नाम आइटम पैरा इससे पहले कि आप को छिपाने के लिए (यानी previousBlock) चाहते
  3. नाम पैरा आप छिपाना चाहते हैं (यानी hideParagraph)

तब:

 if (<hide paragraph>) 
     { 
      if (previousBlock.NextBlock == hideParagraph) 
      { 
       flowDocument.Blocks.Remove(hideParagraph); 
      } 
     } 
     else 
     { 
      if (previousBlock.NextBlock != hideParagraph) 
      { 
       flowDocument.Blocks.InsertAfter(previousBlock, hideParagraph); 
      } 
     } 
संबंधित मुद्दे