2014-06-25 93 views
0

我對WPF有點新,所以請原諒我,如果這是微不足道的。轉換網格佈局

我有一個面板設置像下面的圖片提示:

enter image description here

這僅僅是我組成的DockPanel中的左側面板的表示。它有一列和三行 - 一個用於標題,一個用於圖像(汽車僅僅是一個佔位符,而不是實際圖像),另一個用於該特定項目的相應統計。 每塊之間實際上有一點空間,但我的繪畫技能不是專業。

無論如何,我想過渡這個面板到我的dockpanel的底部,併成爲水平。不過,我想每行中的項目的最大#爲5,如下面的圖像很差試圖表明:

enter image description here

什麼是一個很好的方法嗎?

我應該在代碼後面做這件事嗎(例如,當我遍歷每個項目類型時,如果到目前爲止類型的數量可以被5整除,則創建一個新行並確保每個新塊與它上面的一個排成一行)或者有沒有辦法在XAML中做到這一點?

任何意見都會很棒。謝謝!

+2

'我應該在代碼後面執行此操作嗎 - - 絕對不是。在WPF中,除了可能涉及許多故事板以及類似事情的複雜(非常複雜)的動畫,在代碼背後都沒有做任何事情。 –

+0

爲什麼選擇5?如果你只是想要它包裝,如果它超過了可用的大小,然後把它們放在一個[WrapPanel](http://msdn.microsoft.com/en-us/library/system.windows.controls.wrappanel.aspx)。 – JimBobBennett

+0

嗯,有趣的是我使用故事板動畫 - 但只是爲了增加動畫的統計。吉姆,這是規格5。不是我的決定^ _ ^ – Ryan

回答

1

我建議您使用UniformGrid控件。從鏈接頁面:

提供了一種排列網格中所有單元格的大小相同的內容的方法。

此外,它有一個Columns屬性,使您能夠設置在網格列數。

<ListBox ItemsSource="{Binding Items}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="5" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

你可以找到更多關於從Panels Overview頁面上MSDN WPF中使用的各種Panel秒。