2009-10-19 53 views
0

Silverlight的數據網格我有兩個的Silverlight(2或3)數據網格(從2009年7月的Silverlight工具包),其定位爲一個在另一個的頂部上。頂部數據網格包含值,底部數據網格包含彙總值(例如總計)。即使用戶更改列標題寬度,列順序以及用戶水平滾動,我也希望他們各自的列始終保持一致。如何才能做到這一點?同步滾動

我用兩個數據網格,因爲我想在較低的DataGrid中的總價值在任何時候都可以看到,當用戶滾動頂部DataGrid的內容垂直。

我試圖訪問使用GetVisualDescendants()DataGrid的水平滾動條,但是這不返回元素。如何才能做到這一點?我猜測可以這樣做,因爲Silverlight Spy顯示了視覺層次結構。

+0

你還需要一個答案嗎?我在http://stackoverflow.com/questions/5963831/silverlight-datagrid-scrollbar-synchronization/7188441#7188441上回答了類似的問題,並可以發佈代碼以同步列寬。 – Timores

回答

0

我建議你設置於格柵的寬度,寬度把他們兩人的網格內。然後將該網格放入滾動查看器中。然後你將在底部有一個滾動條,它將滾動兩個網格。

如果你真的想要兩個滾動條,然後用上面的方法,但把兩者在滾動觀衆和附加到OnScroll事件。然後,您可以使用該事件的值以編程方式滾動另一個滾動查看器。

+0

能否這種方法擴展到處理列的寬度大小調整,重新排序和凍結的列(我忘了提)> –

+0

也許不是列大小調整,因爲這是非常棘手的事情。我曾嘗試在過去爲用戶存儲調整大小的列大小,並且沒有一種乾淨的方式來完成我所知道的操作。您可能能夠綁定到調整大小的datagrid事件(它是在列大小調整時觸發的)並調整較低的網格大小。一旦這是工作,我會探討改變實際的列大小。 – Bryant

+0

我用這種方法(ScrollViewers)遇到的問題是datagrid在用箭頭鍵導航時停止滾動,這對用戶來說是不可接受的。 – devMomentum