2011-09-14 15 views
8

मैं एक लेआउट के साथ एक ListBoxItem बनाना चाहता हूं जिसमें दो क्षेत्रों, एक 'फ्लोट: बाएं' और एक 'फ्लोट: दाएं' शामिल है, जिसमें कुल मिलाकर आइटम सूची सूची में आवंटित पूरी चौड़ाई भरती है और इसके कंटेनर को भरने वाली सूची बॉक्स (यानी उपलब्ध स्थान भरने के लिए विस्तार)।मैं एक्सएएमएल में 'फ्लोट: दाएं' को दोहरा सकता हूं?

मैं इसे एक्सएएमएल में कैसे प्राप्त कर सकता हूं?

धन्यवाद

+1

आपको लगता है कि के लिए एक मेज या ग्रिड घटक का उपयोग कर सकते हैं, सेट एक या स्वत: पर दोनों स्तंभ आकार के। –

उत्तर

8

"आइटम समग्र ListBox के लिए आवंटित पूरे चौड़ाई भरने" के लिए आप इस तरह की एक शैली की जरूरत है डेटा टेम्पलेट के रूट पैनल के लिए आप या तो डॉकपैनेल का उपयोग कर सकते हैं:

<DockPanel> 
    <SomeControlLeft DockPanel.Dock="Left" Margin="0 0 5 0" /> 
    <SomeControlRight DockPanel.Dock="Right" Margin="5 0 0 0" /> 
    <SomeControlFill /> 
</DockPanel> 

या ग्रिड:

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition Width="5" /> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="5" /> 
    <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <SomeControlLeft Grid.Column="0" /> 
    <SomeControlRight Grid.Column="4" /> 
    <SomeControlFill Grid.Column="2" /> 
</Grid> 
+0

इसके लिए धन्यवाद, आप मुझे जो कुछ ढूंढ रहे थे उसे प्राप्त करने के लिए मेरे रास्ते पर पहुंचे। – MalcomTucker

0

एक Grid स्थिति या रूप/पैनल के विभिन्न भागों में गोदी तत्वों का प्रयोग करें। लिस्टबॉक्स के लिए क्षैतिज स्क्रॉल को निष्क्रिय

<Style TargetType="ListBoxItem"> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
</Style> 

और वैकल्पिक रूप से:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" .. > 

+0

क्या आप एक सूची बॉक्स आइटम टेम्पलेट में ग्रिड का उपयोग कर सकते हैं? – MalcomTucker

+0

एक्सएएमएल की सुंदरता यह है कि आप लगभग किसी और चीज के अंदर लगभग कुछ भी उपयोग कर सकते हैं। अगर आपको यह सवाल पूछना है, तो जवाब (लगभग 99% समय) हमेशा एक शानदार ** हाँ ** होने जा रहा है। – qJake

+0

ठीक है धन्यवाद। मैं एक्सएएमएल के लिए नया हूं - यदि आपके पास पल है तो आप कोड नमूना प्रदान कर सकते हैं? बस एक कंकाल महान होगा! धन्यवाद – MalcomTucker

1

इस तरह से मैं यह करना होगा:

<Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Grid Background="Red"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 

         <TextBlock Text="{TemplateBinding Content}"/> 
         <TextBlock Text="{TemplateBinding Tag}" Grid.Column="1"/> 

        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="White"> 

    <ListBox ItemContainerStyle="{StaticResource ListBoxItemStyle}"> 
     <ListBoxItem Content="Lorem" Tag="Ipsum"/> 
     <ListBoxItem Content="Hello" Tag="World"/> 
     <ListBoxItem Content="Be" Tag="Happy"/> 
    </ListBox> 

</Grid> 
संबंधित मुद्दे