【发布时间】:2018-08-25 12:34:04
【问题描述】:
我在网格行中有一个堆栈面板,行高设置为自动。
我在运行时添加用户控件并且高度调整大小很好,但删除用户控件时高度并没有减少。我试图清除 stackpanel 子项,一个一个地删除它们,并且还在每个用户控件中实现了IDisposable,但是当子项计数显示为零时,高度并没有减少。
下面是 XAML 示例,欢迎提供任何帮助吗?
<Grid x:Name="TestGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Test Header" Style="{StaticResource SubHeaderTextBlock}" />
</StackPanel>
<StackPanel x:Name="ChildItems" Grid.Row="1" />
</Grid>
【问题讨论】:
-
你是如何删除用户控件的?
-
正如我所说,我已经尝试清楚,一一删除并实施 I Disposable。我看到 I Disposable disposing 被触发并且控件被移除,因为 Stackpanel 子计数在移除项目后显示为零但高度没有调整。我也调用了 LayoutUpdate,但高度仍然没有差异。
-
您能否尝试将孩子的可见性更改为折叠并告诉我它是否影响了您的堆栈面板大小?
-
使其折叠使高度为零,然后我删除所有子项,然后再次使其可见并且高度不正确(仍然显示与删除子项之前相同的高度)
-
使用 ItemsContainer 代替 StackPanel。在 WPF 中以这种方式使用 StackPanel 会产生强烈的代码气味。