2012-04-01 38 views
0

我需要一些幫助來創建我想要的設計。
我的ViewModel有三個集合,它們使用Caliburn.Micro綁定到三個ItemsControl。每個集合包含10到31個項目。
我想將每個ItemControl放入一個Expander。到目前爲止,就這麼簡單:使用多個擴展器設計

<StackPanel> 
    <Expander IsExpanded="True" Header="Day recordings"> 
    <ItemsControl Name="DayRecordings" /> 
    </Expander> 
    <Expander IsExpanded="False" Header="Month recordings"> 
    <ItemsControl Name="MonthRecordings" /> 
    </Expander> 
    <Expander IsExpanded="False" Header="Digit recordings"> 
    <ItemsControl Name="DigitRecordings" /> 
    </Expander> 
</StackPanel> 

現在的問題是,他們超出了它們被包含在StackPanel的範圍擴大
我想Expander s到這樣的表現:

  1. 如果只展開一個Expander,則應使用StackPanel的完整空間減去其他未展開的Expander所需的空間。在展開的Expander內部應顯示一個垂直ScrollBar
  2. 如果N Expander s被展開,則每個應該佔用StackPanel總空間的1/N減去其他未擴展的空間Expander s所需的空間。在每個展開的Expander s中都應該顯示一個垂直ScrollBar
    1. 如果其中一個擴展的Expander需要的空間少於指定的1/N,則應該只使用所需的空間,並將多餘的空間均勻分配給其他擴展的Expander。此行爲是可有可無的有,但不是必需的

不幸的是,我根本就沒有從上面的簡單XAML更多,因爲我甚至不就如何解決這一點的想法。 ..

+1

我們之前有這個問題,可能不會找到... – 2012-04-01 13:58:30

+2

@ H.B .:我可能會使用錯誤的關鍵字,但我無法找到類似的問題。請善良,並將其標記爲重複,以便我可以找到它。 – 2012-04-01 14:01:26

+0

+1原因我不知道爲什麼這應該有一個投票 – Paparazzi 2012-04-01 22:13:10

回答

1

使用ScrollViewer,在其中放置一個Grid,將行高設置爲auto。
把一個轉換器放在MaxHeight上,如果你想要一些花哨的佈局。

+0

'ScrollViewer'內的'Grid'將在'Expander'外面顯示一個'Scrollbar',而在每個'Expander'內不會顯示一個'ScrollBar'。 – 2012-04-01 14:09:18

+1

然後爲每個ItemsControl提供一個ScrollViewer。 – 2012-04-01 14:10:38

0

使用工具箱中的accordion控件獲取所需的行爲。

+0

最後一個版本是兩歲,評論指出有很多bug。這不是我想用的。 – 2012-04-01 14:08:00