2010-07-28 163 views
0

我讀過了,將畫布放置在scrollviewer中將無法工作,因爲畫布不報告其大小。我一直在嘗試使用不同的容器(邊界,網格,畫布和滾動查看器),並且可以通過對scrollviewers在嵌套容器中的行爲方式的簡單解釋來真正做到。例如如果我有一個UserControl> Grid1> Canvas1> ScrollViewer> Grid2> Canvas2的容器層次結構,當Canvas2變得比Canvas1更寬時,Grid2應該出現在滾動條2周圍嗎? (或者確實比UserControl更廣泛)如果不是,我應該如何組織我的容器,以便可以將大量元素添加到Canvas2,並根據需要顯示滾動條。 (我的用戶控件的寬度和高度都設置爲100%)Silverlight畫布滾動條

回答

1

如果你明確地給它一個尺寸,Canvas將和ScrollViewer一起工作。問題來自這樣一個事實,如果您沒有爲任何控件提供高度和寬度,它將嘗試並根據它的父容器確定它的可用區域。然而,A ScrollViewer具有無限可用區域。例如

Grid爲例。如果我定義了具有2個星型寬度列和2個星型高度行的GridGrid如何知道每個列應該是多寬?明星說他們應該是可用區域的一半,但是在ScrollViewer之內,可用區域是無限的。

您將什麼控件添加到Canvas2?如果您添加的固定位置比ScrollViewer將擴大以容納所有元素。如果你沒有給他們固定的位置,那麼所有的控件都會堆疊在一起,因爲這是一種排列行爲,因爲這是Canvas