2011-11-09 72 views
1

我目前正在研究一個包含窗口的項目,該窗口需要顯示1到9個用戶控件。wpf智能電網布局

我正在尋找最佳方法來確保所選用戶控件的數量可用的全部空間。

例如如果選擇了9個項目,則會顯示3 x 3的網格。但是,如果選擇8,那麼2行將顯示3行,下面的行將顯示2行。 (使用colspan)。

我一直在試圖使用一個統一的網格,因爲這看起來好像大多數期望的行爲已經存在。 (按順序添加顯示項目,自動調整窗口大小)。然而,當所選項目的數量不能被3整除時,我正在努力實現某種形式的智能!

有沒有人遇到過這個問題?或者可以建議一個合適的方法來解決問題?

謝謝!

回答

1

嘗試使用WrapPanel並將每個對象的Width設置爲包裝面板大小的1/3。當第一行填滿

+0

我將使用包裝面板進行調查,並將對象的寬度設置爲包裝面板大小的1/3。我將不得不檢查項目計數的mod來計算最後的項目寬度。謝謝。 – seanzi

+0

最後,我想出了一個使用包裝面板的解決方案,每次將項目添加到面板時。我計算每行的行數和控件數量,並將每個項目的高度和寬度設置爲面板高度和寬度的一小部分。 – seanzi

+0

@ UniformGrid的Rachel完成了與您所描述的相同的事情,但我認爲它更靈活,因爲它不需要任何硬編碼的值(通過XAML)或任何背後的代碼。只需設置Columns的數量並自動計算寬度。 – Dave

0

堅持用統一的網格。因爲它聽起來好像要3列,不管顯示控件的數量,你只需要使用:

<UniformGrid Columns="3" /> 

,它會做你問什麼 - 如果你有8對,你」會得到2x3 + 2以下。

+0

這確實給三個項目,但最後兩個項目沒有被拉伸到水平的剩餘空間兩排

這將自動移動項目的一個新行。這爲項目留下了一個空的空間,這正是我想要避免的。謝謝 – seanzi

+0

@ 53AN啊,對不起,我沒有意識到你想讓最後兩個這樣伸展。 – Dave