2011-11-10 90 views
0

我需要儘可能多的控件以適應「列表框的一行」。目標不是浪費表格上的空間。列表框將是表格的70%高度(30%是一個色帶)和100%的寬度。ListBox項目中的多個控件

我使用自定義ItemTempleSelector,這樣就會在列表中的控制將是A的組合:

標籤+文本框,標籤+組合框,標籤+的DateTimePicker

當然這些出現一個下另一個,但我需要他們從左到右顯示。 非常感謝。

回答

4

您需要做的是修改ListBoxItemsPanel以包含WrapPanel。這樣你的項目將顯示從左到右,然後包裝到下一行(我認爲這就是你想要的)。您還需要禁用列表框上的水平滾動條。

<ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     ...your other stuff like the ItemTemplate 
    </ListBox> 

另外要考慮的是,你使用ListBox,因爲你希望他們能夠選擇每個項目? 如果不是,ItemsControl將是一對一替換,重量更輕,不支持選擇項目。

+0

工作過。非常感謝! – MaxWillmo

0

也許我不明白這個問題,但爲什麼你不把所有的控件放到Wrappanel中,那是你在數據模板中的根控制。

+0

這不是最容易解釋的情況。該列表將有一個項目源,這將是我的自定義對象的列表。這個對象有一個枚舉將決定列表框中的控件是否應該是標誌性控件的控件。綁定到列表框的實際列表在功能區中的檢查按鈕上有所不同,因此它可能會經常更改。 – MaxWillmo