2012-03-05 37 views
0

我有一個WrapPanel其中將包含幾個不同的自定義UserControls。根據情況,我可能需要篩選哪些UserControls可見。我的目標是通過顯示/隱藏需要過濾的控件 - 從而將剩下顯示的控件移動到面板的左上角,我可以切換哪些控件可以實時顯示。隱藏WrapPanel內的對象/用戶控件?

現在我只是簡單地將Visibility控件的屬性設置爲Visibility.Collapsed,當我不希望它們出現時。我認爲,因爲我使用的是WrapPanel,其餘的控件將轉移到面板的左上角。

相反,隱藏一些UserControls的,該控件仍然可見逗留正是他們面前,我留下仍在顯示控件之間的差距後。我打開我的應用程序在Silverlight中間諜,它表明了UserControls實際上仍然存在(這是有道理的),但僅僅是無形的。

所以我的問題是: 有沒有一種方法,我可以顯示/隱藏UserControls一個WrapPanel允許仍可見UserControls滑動到其新位置(所有逐步轉向左上方內 - 類似到StackPanel)?

我辯論從WrapPanel取出UserControls完全(我認爲這會工作),並將它們存儲在內存中,直至需要它們。然後,如果我想顯示/隱藏其他控件,我會從我的內存對象中獲取它們。似乎應該有更好的方法來做到這一點。

如果任何人有任何建議或意見,將不勝感激。謝謝!

-Lloyd

UPDATE:

XAML:(非常簡單)

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

代碼隱藏:越來越動態地添加的用戶控件:

MyLayout.Children.Add(oUserControl)

而且他們越來越設置爲動態倒塌以及:

oUserControl.Visibility = Visibility.Collapsed

+3

將可見性設置爲摺疊應該可以工作(並且對我有用)。對我而言,將可見性設置爲隱藏可以證明您在上面遇到的情況。你可以發佈一些xaml嗎? – wdavo 2012-03-05 23:01:09

+0

@wdavo查看更新 – lhan 2012-03-06 14:16:15

+0

關於爲什麼ScrollViewer會影響到的任何想法? – lhan 2012-03-06 18:39:03

回答

0

我想我已經找到了問題。我們添加了WrapPanelScrollViewer最近,和當我把ScrollViewer中出我能夠實現我想要的功能。

我不知道爲什麼會ScrollViewer有效果,但?

而且,我發現,我可以離開ScrollViewer到位和簡單的調用.Measure()WrapPanel更新佈局。

這兩個選項都不會對我有100%的意義,但它們似乎都起作用。

+0

儘管我懷疑MS會給予任何關注,但請以任何方式提交MS Connect的錯誤。 – 2012-03-06 20:01:40