嵌套控件的Silverlight自动高度问题

时间:2014-09-05 16:08:44

标签: c# xaml silverlight accordion

我继承了一个现在需要扩展的silverlight应用程序。该应用程序位于地图上,最初有1个文本块项和一个手风琴控件选项。这已被扩展,以便文本块成为手风琴项目,并且进一步的手风琴项目已添加了2组控件。

所以我的计划是按照

的方式开始的
<accordionMain>
  <accordionMainItem1>
    <accordion1>
      <accordion1Item>
        <controls>
      </accordion1Item>
      <accordion1Item2>
        <controls>
      </accordion1Item2>
    </accordion1>
  <accordionMainItem1>
  <accordionMainItem2>
    <accordion2>
      <accordion2Item>
        <controls>
      </accordion2Item>
      <accordion2Item2>
        <controls>
      </accordion2Item2>
    </accordion2>
  <accordionMainItem2>
</accordionMain>

这有望为我提供我需要添加控件的结构。

对Silverlight不熟悉但是做了一些XAML后我取得了一些进展,但遇到了问题。

整个东西所在的StackPanel和Canvas不会像我想的那样自动调整大小。我不确定如何解决这个问题,但是没有运气就试过Height =“Auto”。当第二支手风琴根据需要将面板和边框扩展到自动尺寸下时,我希望是这样。

我附上了full XAML here

1 个答案:

答案 0 :(得分:1)

就个人而言,我避免使用StackPanel进行非平凡的控件布局。我发现在填充可用空间和调整大小时,Grid更灵活,这通常是我在设计一个会增长和缩小的界面时所需要的。

因此,我的第一步是为您的网格定义几行,并将每个扩展元素放入一行。回顾一下您的示例,我发现实际上只有一个不断扩展的事情:AccordianMain,因此请确保Row位于Height="Auto"

你偶然使用Canvas是什么?为什么包含Grid上的手风琴的Canvas以及StackPanel Canvas中唯一的项目?

尝试并简化您的布局,我不明白为什么您的内部Grid无法直接放入您的Border,因此无法看到{ {1}}或StackPanel正在加入聚会。但也许我错过了一些东西。