2010-10-14 67 views
1
<ScrollViewer Name="svDataGrid" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" ScrollChanged="ScrollViewer_ScrollChanged" > 
     <DataGrid VerticalScrollBarVisibility="Disabled" Background="Transparent" Visibility="Collapsed" Name="dgList" Grid.Row="1" IsSynchronizedWithCurrentItem="True" 
        AutoGenerateColumns="False" AlternatingRowBackground="Azure" 
        CanUserAddRows="False" CanUserDeleteRows="False" 
        CanUserSortColumns="True" CanUserReorderColumns="False" 
        CanUserResizeColumns="True" CanUserResizeRows="False" IsReadOnly="True" MouseDoubleClick="dgList_MouseDoubleClick" PreviewKeyDown="dgList_PreviewKeyDown"> 

     </DataGrid> 
     </ScrollViewer> 
+0

如何.....通常帶有問號結束! – Shoban 2010-10-14 12:41:50

+0

爲什麼要將DataGrid放入ScrollViewer?一個DataGrid擁有它自己的一組滾動條,一個ScrollViewer只會搞砸了。 – Sam 2010-12-06 09:02:47

回答

0

你的代碼可能不會完成你想要的東西(至少這是我的猜測,因爲你沒有說明你真正想要的東西)。

DataGrid確實包含它自己的ScrollBars,並且通過將DataGrid放入ScrollViewer中,您將告訴DataGrid最大化,無需滾動(ScrollViewer將處理該問題)。所以網格會加載並渲染所有的內容。

這將是明智的擺脫ScrollViewer,所以你可以使用適當的滾動技術的DataGrid本身。那麼你可能想要尋找DataGrid虛擬化(但我不確定你真正想要達到什麼,所以它可能會有所不同)。

0

我想不出任何理由使用ScrollViewer與DataGrid,因爲@Sam說,DataGrid有自己的ScrollBars。如果你的原因是因爲你想趕上ScrollChanged事件,您可以通過使用DataGrid的附加屬性這麼做:

<DataGrid ScrollViewer.ScrollChanged="ScrollViewer_ScrollChanged" ...> 
</DataGrid>