弹出窗口中的WPF Accordion控件

时间:2011-10-06 09:30:59

标签: .net wpf user-interface accordion

我正在根据此链接使用Accordion控件 - Is there a WPF control I can use to expand/collapse panels (animated)

问题是我希望这个控件由Popup托管。问题是,当我展开任何组时,Popup不会调整大小。如果我给弹出窗口一个固定的大小,那么项目会被扩展,但这是一个难看的效果,因为你第一次看到一个大的弹出窗口,顶部有一些折叠的项目。当项目展开和/或崩溃时,宁愿让弹出窗口调整大小。

有什么建议吗?

感谢。

编辑:看起来我完全弄错了。我不需要使用Accordion控件。刚刚将扩展器放在网格中,每行高度=“自动”。扩展/折叠组时,弹出窗口可以很好地调整大小。

2 个答案:

答案 0 :(得分:0)

我真的很讨厌WPF的默认Popup,所以通常使用我自己的。可以找到here

的代码

弹出内容的默认大小取决于弹出窗口内容的大小。以下是如何使用它的粗略示例:

<local:PopupPanel
    local:PopupPanel.PopupParent="{Binding ElementName=PopupParentPanel}"
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}">

    <DockPanel>
        <Label DockPanel.Dock="Top" Background="Silver" Content="Popup Header" />
        <Button DockPanel.Dock="Bottom" Content="Save" />
        <local:MyUserControl DataContext="{Binding }" />
    </DockPanel>

</local:PopupPanel>

答案 1 :(得分:0)

您可以使用绑定到手风琴控件的ActualHeihgt属性来设置弹出窗口的高度。

看起来像这样:

<Popup Height="{Binding ElementName=myAccordion,Path=ActualHeight" >
 <Accordion x:Name="myAccordion">
  ...
 </Accordion>
</Popup>

但你肯定会设定一个身高限制。可以使用带参数的转换器来解决。