【发布时间】:2017-03-06 18:15:38
【问题描述】:
我有带有扩展器的用户控件。我在 ListBox 的主窗口中使用它,如下所示:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding MyCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:MyUserControl />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
表单加载后用户控件正常填充空间。
在子用户控件展开后,父容器的高度按预期增长。 After child user control expanded
如果我折叠 UserControl,父容器中会留下空白空间。 Blank space left after child user control collapsed
如果主窗口得到调整大小事件,所有的空白空间都消失了。
我尝试在代码中使用 Element.InvalidateVisual 和 Element.InvalidateMeasure,还尝试使用 UpdateLayout,并使用 DockPanel + DockPanel.Dock="Top" 为面板的子项包装 ListBox。没有效果。
另一方面,当我在代码中添加相同的 UserControl 时,这个伪影消失了:父控件在子 UserControl 折叠后按我的需要折叠。但我需要 XAML 和 UserControl 作为 DataTemplate。
请帮帮我。我确信一定有一些简单的解决方案,但我是 XAML 的新手,所以我对此有困难。
【问题讨论】:
-
你能包含有扩展器的usercontrol xaml吗?
-
@mathew-jibin 代码是:
<stackpanel verticalalignment="Top" height="Auto"><expander><listbox scrollviewer.horizo scrollviewer.cancontentscroll="False " itemssource="{Binding MyCollection}"><listbox.itemtemplate><datatemplate><myusercontrol></myusercontrol></datatemplate></listbox.itemtemplate></listbox></expander></stackpanel>
标签: c# wpf xaml user-controls