我有一個垂直的WarpPanel,它在運行時用控件填充。控件的類型和數量在運行時確定。它適用於具有固定高度的控件,但根據其內容擴展的控件(例如Listbox)通常會創建一個新列。我不知何故需要強制面板將控件放在最後一列作爲其他固定高度控件,除非列中可用空間小於我們試圖放置的控件的MinHeight。爲控件設置高度或MaxHeight不是一個選項。WrapPanel爲每個動態擴展控件創建一個新列
下圖顯示了該問題。這兩個列表框的寬度是相同的,但不是將它們放在同一列中,而是其中一個列表框以不可見的方式顯示。
取而代之的是我希望得到這個:
有什麼辦法來實現這個未做/使用自定義面板?
代碼:
**Panel:**
<WrapPanel x:Name="wp" Orientation="Vertical">
**Adding controls:**
private void AddControl(bool isListBox)
{
if (isListBox)
{
var lb = new ListBox();
lb.MinHeight = 310;
lb.Width = 310;
lb.MaxWidth = 310;
lb.MinWidth = 310;
wp.Children.Add(lb);
}
else
{
var cb = new ComboBox();
cb.Width = 310;
cb.MaxWidth = 310;
wp.Children.Add(cb);
}
}
您能否包含代碼,知道子控件的對齊屬性的方向和值將會有幫助。 – 2014-09-04 15:03:47
*有沒有任何方法可以在沒有製作/使用自定義面板的情況下實現這個功能?* ...不,不是因爲您的要求非常具體。然而,創建一個自定義的'Panel'比你想象的要容易得多......只有兩種方法可以覆蓋:[如何在WPF中創建自定義佈局面板](http://wpftutorial.net/CustomLayoutPanel.html )。 – Sheridan 2014-09-04 15:39:16