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

本文关键字:高度 问题 Silverlight 控件 嵌套 | 更新日期: 2023-09-27 18:20:58

我继承了一个silverlight应用程序,现在需要扩展。该应用程序位于地图上,最初有1个文本块项目和一个可折叠的选项控件。这已经被扩展,使得文本块成为一个可折叠项目,并且添加了另外两组控件的可折叠项目。

所以我的计划是沿着的路线开始的

<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",但没有成功。我想要的是当第二个手风琴根据需要扩展面板和边框时,自动调整尺寸。

我在这里附上了完整的XAML

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

就我个人而言,我避免使用StackPanel来进行控件的非琐碎布局。我发现Grid在填充可用空间和调整大小方面要灵活得多,这通常是我在设计会增长和收缩的界面时想要的。

因此,我对您的示例的第一步是为您的网格定义几行,并将展开的元素分别放置到一行中。回顾您的例子,我发现实际上只有一个扩展的东西:AccordianMain,所以请确保它在Row中,其中Height="Auto"

顺便问一下,你用Canvas干什么?为什么Grid包含Canvas上的手风琴,而StackPanel中唯一的项目是Canvas

试着简化你的布局,我不明白为什么你内心的Grid不能直接放在你的Border中,所以看不到StackPanelCanvas给聚会带来了什么。但也许我错过了什么。