2013-08-27 3 views
6

निम्नलिखित XAML संरचनादृश्यता यूआई में मामूली जगह खाली छोड़ने की संक्षिप्त किए

<Grid> 
    <StackPanel> 
     <TextBlock> 
      <TextBlock>Block 1</TextBlock> 
      <TextBlock>Block 2</TextBlock> 
     </TextBlock> 
     <TextBlock> 
      <TextBlock Visibility="Collapsed">Block 3</TextBlock> 
      <TextBlock>Block 4</TextBlock> 
     </TextBlock> 
     <TextBlock> 
      <TextBlock>Block 5</TextBlock> 
      <TextBlock>Block 6</TextBlock> 
     </TextBlock> 
    </StackPanel> 
    </Grid> 

को देखते हुए मैं इस उत्पादन की उम्मीद:

Block 1 Block 2 
Block 4 
Block 5 Block 6 

लेकिन कहां है मैं इस

Block 1 Block 2 
Block 4 
Block 5 Block 6 

मिल Block 4 से पहले अंतरिक्ष आ रहा है, और मैं इसे कैसे दूर कर सकता हूं?

उत्तर

5

Snoop का उपयोग करके, आप देख सकते हैं कि यह ContainerVisual से है जो आपके बच्चे को TextBlock s लपेटता है। चूंकि TextBlockInline व्युत्पन्न वस्तुओं का संग्रह प्रदर्शित करने का प्रयास कर रहा है (यह आमतौर पर दूर किया गया है), इसे में अपने TextBlock को लपेटना होगा।

चूंकि ये वास्तविक वस्तुएं माता-पिता TextBlock द्वारा व्यवस्थित की जा रही हैं, और उनके पास Visibility संपत्ति भी नहीं है, तो आपको अपने कोड को थोड़ा सा रिफैक्टर करने की आवश्यकता होगी। मुझे कल्पना है कि आप कई अलग-अलग गुणों से जुड़ने की कोशिश कर रहे हैं, और उन्हें एक टेक्स्टब्लॉक में प्रदर्शित करना चाहते हैं। आप इस तरीके के एक जोड़े को ठीक कर सकते हैं:

  • एक IMultiValueConverter करें और यह जान सकें कि
  • एक Orientation="Horizontal" साथ StackPanel के साथ अपने ViewModel
  • में जटिल स्ट्रिंग का निर्माण बदलें बाहरी TextBlock को नियंत्रित करने के गुण के एक झुंड से पारित

मैं आखिरी अनुशंसा करता हूं, क्योंकि यह सबसे आसान है।

<StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock>Block 1</TextBlock> 
     <TextBlock>Block 2</TextBlock> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Visibility="Collapsed">Block 3</TextBlock> 
     <TextBlock>Block 4</TextBlock> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock>Block 5</TextBlock> 
     <TextBlock>Block 6</TextBlock> 
    </StackPanel> 
</StackPanel> 
+0

वाह, महान जवाब! धन्यवाद... –

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