我继承了一个现在需要扩展的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
答案 0 :(得分:1)
就个人而言,我避免使用StackPanel
进行非平凡的控件布局。我发现在填充可用空间和调整大小时,Grid
更灵活,这通常是我在设计一个会增长和缩小的界面时所需要的。
因此,我的第一步是为您的网格定义几行,并将每个扩展元素放入一行。回顾一下您的示例,我发现实际上只有一个不断扩展的事情:AccordianMain
,因此请确保Row
位于Height="Auto"
。
你偶然使用Canvas
是什么?为什么包含Grid
上的手风琴的Canvas
以及StackPanel
Canvas
中唯一的项目?
尝试并简化您的布局,我不明白为什么您的内部Grid
无法直接放入您的Border
,因此无法看到{ {1}}或StackPanel
正在加入聚会。但也许我错过了一些东西。