我正在根据此链接使用Accordion控件 - Is there a WPF control I can use to expand/collapse panels (animated)
问题是我希望这个控件由Popup托管。问题是,当我展开任何组时,Popup不会调整大小。如果我给弹出窗口一个固定的大小,那么项目会被扩展,但这是一个难看的效果,因为你第一次看到一个大的弹出窗口,顶部有一些折叠的项目。当项目展开和/或崩溃时,宁愿让弹出窗口调整大小。
有什么建议吗?
感谢。
编辑:看起来我完全弄错了。我不需要使用Accordion控件。刚刚将扩展器放在网格中,每行高度=“自动”。扩展/折叠组时,弹出窗口可以很好地调整大小。答案 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>
但你肯定会设定一个身高限制。可以使用带参数的转换器来解决。