2012-03-16 60 views
1

我在代碼中創建面板以這樣的方式設置初始高度面板阿瓦隆碼頭

DockableContent dockableContent = CreateDockableContent<TView>(model); 
dockableContent.Show(_dockingManager, AnchorStyle.Bottom); 

我怎麼可以指定該面板初始高度?以下不工作:

dockableContent.Height = 400; 

ResizingPanel.SetResizeHeight(dockableContent, new GridLength(400)); 

回答

1

Nagg,

設置面板的高度只有漂浮時,會影響它的外觀。當它停靠時,它受Resizing面板的限制(看起來像你自己想象的那樣)。

調整大小面板在AvalonDock庫中以默認大小創建。

您可能想要了解AvalonDock的2.0版本 - 它爲定製面板提供了更多的靈活性 - 尤其是因爲它們可以綁定到ViewModel,您可以在其中更改外觀。

如果你仍然想使用1.3,那麼你就必須修改AvalonDock源代碼來讓它做你想做的事(例如添加一個默認的面板高度)。

史蒂夫

+3

謝謝你的回答,史蒂夫。我發現解決方案:DockablePane被創建_after_DockableContent.Show被調用,所以我可以爲它分配ResizingPanel.SetResizeHeight,它的工作原理! – Nagg 2012-03-20 17:50:33

+0

(贊)......... – samneric 2012-03-20 18:56:40

3

阿瓦隆碼頭2.0有一些內部的代碼,會自動調整DockWidth/DockHeight明星大小。這會阻止您在垂直/水平組窗格中使用固定/初始高度/寬度面板。

我現在看到的唯一修復方法是從AvalonDock源代碼註釋掉這個行爲。即;在OnFixChildrenDockLengths的類LayoutAnchorablePaneGroupControl

希望這有助於。

5

對於固定高度的面板設置DockMinHeight =「120」和DockHeight =「1 *」。對於其他面板設置DockHeight =「90 *」。

在這種情況下,固定高度的面板會變得很短,DockMinHeight將被使用。