2011-01-18 14 views
12

मेरे पास एक सूची बॉक्स (डब्ल्यूपीएफ) है जिसमें चेकबॉक्स शामिल हैं। मैं एक विन्यास स्क्रीन में उपयोग कर रहा हूँ। नीचे योजनाबद्ध उदाहरण:डब्ल्यूपीएफ लिस्टबॉक्स लेआउट: एकाधिक कॉलम

alt text

अब मैं एक "टेस्ट 5" चेकबॉक्स जोड़ना चाहते हैं।

alt text

तो चेक बॉक्स इस तरह व्यवस्थित किया जाएगा ListBox लेआउट संशोधित किया जा सकता है: मैं के रूप में नीचे दिखाया गया है ऊर्ध्वाधर अंतरिक्ष सीमित है, इसलिए मैं यह क्षैतिज दिशा में दिखाना चाहते हैं तो?

+0

शायद एक सूची बॉक्स ऐसा कर सकता है, लेकिन WrapPanel क्यों नहीं? क्या आपको वास्तव में एक चयनित इटिम की आवश्यकता है? –

+0

@ हेंक, 'व्रपपनेल' को 'लिस्टबॉक्स' के 'आइटमपैनेल' के रूप में सेट करेगा। – decyclone

+0

@decyc, मुझे पता है लेकिन मैं अभी भी एलबी के लिए पहली जगह की आवश्यकता/इच्छा पर सवाल उठाता हूं। –

उत्तर

17
<ListBox Name="CategoryListBox" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ItemsSource="{Binding Path=RefValues, 
       UpdateSourceTrigger=PropertyChanged}" 
       SelectionMode="Multiple"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate > 
      <StackPanel Orientation="Horizontal" 
         MinWidth="150" MaxWidth="150" 
         Margin="0,5, 0, 5" > 
       <CheckBox 
        Name="checkedListBoxItem" 
        IsChecked="{Binding 
          RelativeSource={RelativeSource FindAncestor, 
          AncestorType={x:Type ListBoxItem} }, 
          Path=IsSelected, Mode=TwoWay}" /> 
       <ContentPresenter 
        Content="{Binding 
          RelativeSource={RelativeSource TemplatedParent}, 
          Path=Content}" 
        Margin="5,0, 0, 0" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

या के रूप में सरल रूप में यह:

<Grid> 
    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel IsItemsHost="True" /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBoxItem>listbox item 1</ListBoxItem> 
     <ListBoxItem>listbox item 2</ListBoxItem> 
     <ListBoxItem>listbox item 3</ListBoxItem> 
     <ListBoxItem>listbox item 4</ListBoxItem> 
     <ListBoxItem>listbox item 5</ListBoxItem> 
    </ListBox> 
</Grid> 
9

मैं एक ऐसी ही समस्या और eibhrum का जवाब मुझे कुछ विचार दे दी है का सामना करना पड़ा। मैंने निम्नलिखित कोड का उपयोग किया और मुझे यह भी लगता है कि आपको क्या चाहिए। मैंने वर्कपैनल के बजाय यूनिफॉर्मग्रिड का उपयोग किया।

<ListBox HorizontalAlignment="Stretch" 
     ItemsSource="{Binding Timers}" 
     > 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 

     <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <!-- UNIFORM GRID HERE --> 
      <UniformGrid Columns="3" IsItemsHost="True" 
       HorizontalAlignment="Stretch"/> 
     </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 

     <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border> 
       <StackPanel Orientation="Vertical" > 
        <TextBlock Text="{Binding Label}" TextWrapping="Wrap"/> 
        <Separator Margin="5,0,10,0"/> 
       </StackPanel> 
      </Border> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 

    </ListBox> 
1

मैं जानता हूँ कि यह एक पुराने पोस्ट है, लेकिन मैं इस समय मैं एक ही समस्या हल करने के लिए यहाँ कोशिश कर रहा था करने के लिए एक काफी आसान तरीका भर में ठोकर खाई: http://social.technet.microsoft.com/wiki/contents/articles/19395.multiple-columns-in-wpf-listbox.aspx

बस अपने बाध्यकारी डेटा स्रोत जोड़ (या आवश्यक वस्तुओं को जोड़ें)।

<ListBox Name="myLB" ScrollViewer.HorizontalScrollBarVisiblity="Disabled"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="2" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 
+0

मुझे यह पसंद है कि आपने एक लिंक शामिल किया है, लेकिन मैं यह समझने की कोशिश कर रहा हूं कि आपका उत्तर @gisek द्वारा छोड़े गए एक से अलग कैसे है। यदि कोई महत्वपूर्ण अंतर है (मैं स्वीकार करता हूं कि मैं इसे याद कर सकता हूं), तो आप यह इंगित करना चाहेंगे कि वह क्या है। – David

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