0

我有一个WrapPanel将包含几个不同的 custom UserControls。根据情况,我可能需要过滤掉UserControls可见的内容。我的目标是我可以通过显示/隐藏需要过滤的控件来动态切换哪些控件可见 - 从而将左侧显示的控件移动到面板的左上角。

现在我只是将Visibility控件的属性设置为Visibility.Collapsed我不希望它们出现的时候。我以为因为我使用的是WrapPanel,所以其余的控件会转移到面板的左上角。

相反,在隐藏了一些 之后,仍然UserControls可见的控件完全保留在它们之前的位置,并且我在仍然显示的控件之间留下了间隙。我已经在Silverlight Spy中打开了我的应用程序,它表明它们实际上仍然存在(这是有道理的),但只是不可见。UserControls

所以我的问题是: 有没有一种方法可以UserControls在 a中显示/隐藏,WrapPanel它允许仍然可见 UserControls的滑动到他们的新位置(全部向左上角移动 - 类似于 a StackPanel)?

我已经讨论过从(我认为这会起作用)中UserControls完全删除WrapPanel它们并将它们存储在内存中,直到需要它们为止。然后,如果我想显示/隐藏其他控件,我会从我的内存对象中获取它们。不过,似乎应该有更好的方法来做到这一点。

如果有人有任何建议或意见,将不胜感激。谢谢!

-劳埃德

更新:

XAML:(非常简单)

<toolkit:WrapPanel x:Name="MyLayout" Height="300" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" />

代码隐藏:用户控件正在动态添加:

MyLayout.Children.Add(oUserControl)

它们也被设置为动态折叠:

oUserControl.Visibility = Visibility.Collapsed

4

1 回答 1

0

我想我找到了问题所在。我们最近添加了WrapPanel一个ScrollViewer当我拿出 ScrollViewer 时,我能够实现我想要的功能。

我不确定为什么ScrollViewer会有这种效果?

此外,我发现我可以保留ScrollViewer 原位并简单地调用.Measure()WrapPanel更新布局。

这两种选择对我来说都不是 100% 有意义的,但它们似乎都有效。

于 2012-03-06T14:21:33.637 回答