2012-06-30 78 views
0

我正在寫使用Silverlight在Windows Phone 7的應用程序。不能滾動條添加到電網

我花了一些樣3小時試圖滾動條添加到網格組件,所以,當我在代碼中動態添加了很多的東西,我可以向下滾動才能看到它。

我的XAML看起來像這樣:

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <ScrollViewer VerticalScrollBarVisibility="Visible" Name="Scrolling"> 
     <ScrollViewer.Content> 
      <Grid x:Name="myGrid" HorizontalAlignment="Left" Width="650" VerticalAlignment="Top" Height =" 300" Background="Red" Grid.Row="1" Margin="12,108,0,0"/> 
     </ScrollViewer.Content> 
    </ScrollViewer> 

    <Grid Grid.Row="1" Height="79" HorizontalAlignment="Left" Margin="0,405,0,0" Name="grid1" VerticalAlignment="Top" Width="728"> <!-- Not important --> 
    </Grid> 

    <Grid Grid.Row="1" Height="73" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid2" VerticalAlignment="Top" Width="704"> <!-- Not important --> 
    </Grid> 
</Grid> 

然後在代碼:

myGrid.Children.Add(some_component); 

我試過很多的方法很多,但沒有工作。 任何人都可以幫忙嗎?

+0

哪裏的DataGrid你正在談論在應用剩餘空間有用嗎?我只看到一個網格... – Charleh

+0

可以滾動瀏覽器的ContentProperty是內容,這樣你就不需要指定ScrollViewer.Content ...標籤是多餘的 – Charleh

+0

我的壞,這不是一個DataGrid,但電網。關於ContentPropety - 我試圖用很多方式解決這個問題,其中一個解決方案包括添加這個屬性。但問題仍然沒有解決。我怎樣才能添加一個滾動條到網格組件? – user1147467

回答

1

首先,你不能動態地爲Grid添加的東西這麼容易,因爲你必須更新RowDefinitionsColumnDefinitions爲好。如果您沒有指定這些定義,那麼這些孩子將會就地堆疊起來。

嘗試使用StackPanelWrapPanel代替,只要孩子佔用足夠的空間,您應該會看到滾動條。

+0

編號沒有幫助。我嘗試了兩個StackPanel和WrapPanel,滾動條並沒有出現,即使我在XAML中添加了很多項目(更不用說動態地添加它們)。編譯後,當我嘗試滾動面板時,整個面板上升,它應該只滾動它的內容...:/ – user1147467

+0

另外,將'Width =「650」'和'Height =「300」'放在ScrollViewer「,而不是在其內部面板上。 – herzmeister

3

好你嘗試過這一點,因爲你的佈局似乎有點怪

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid> 
     ...Static content here 
    </Grid> 
    <ScrollViewer VerticalScrollBarVisibility="Visible" Grid.Row="1"> 
     ...Content that scales here 
    </ScrollViewer> 
    <Grid Grid.Row="2"> 
     ...Static content here 
    </Grid> 
</Grid> 

這應該很好地工作 - 它有助於瞭解電網是如何工作的。另外值得注意的是,大多數佈局都可能不使用邊距來移動東西 - 由於設備和解決方案的性質,使用邊距進行佈局是不好的做法。自動(「自動」),絕對(「300」)和填充(「*」)的網格有3列/行模式。 )

自動 - 網格單元只進行縮放以適應裏面的內容就

絕對 - 網格單元是您指定

填寫大小 - 網格單元填充所有剩餘任何其他空間R 2與汽車電池/絕對已經計算出,按比例而被設定爲了還填補

您也可以speicify使用相對「填充」等細胞「2 *」,「3 *」等

所以:

<Grid.RowDefinitions> 
    <RowDefinition Height="100" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="2*" /> 
    <RowDefinition Height="3*" /> 
</Grid.RowDefinitions> 

將導致4行,第一行是100個像素高,第3行是第2行的高度的兩倍和第4行的3倍的第2行的高度。最後3行將填滿所有剩餘的空間。

另外值得一提的是網格「*」充滿父容器 - 這是填補了