使用多个扩展器进行设计

时间:2012-04-01 13:54:27

标签: c# wpf xaml

我需要一些帮助才能创造出我想要的设计 我的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的行为如下:

  1. 如果只展开了一个Expander,则应使用StackPanel的完整空格减去其他未扩展Expander所需的空间。在展开的Expander内,应显示垂直ScrollBar
  2. 如果扩展了N Expander,则每个应占StackPanel总空间的1 / N减去其他未扩展Expander所需的空间。在每个展开的Expander中,应显示垂直ScrollBar
    1. 如果其中一个展开的Expander需要的空间少于指定的1 / Nth,则它应该只使用所需的空间,并且多余的空间应该均匀地分配给其他展开的Expander
    2. 这种行为很好,但不是必需的
  3. 不幸的是,我没有上面的简单XAML,因为我甚至不知道如何解决这个问题......

2 个答案:

答案 0 :(得分:1)

使用ScrollViewer,在其中放置网格,将行高设置为自动。
如果你想要一些奇特的布局,可以在MaxHeight上放一个转换器。

答案 1 :(得分:0)

使用工具包中的accordion控件来获取所需的行为。