我有一個SDK:DATAGRID有20列左右,當它打開時它只顯示四個字段/列。這是我想要什麼,我如何把它設計Datagrid on demand load off
基本上我根據用戶點擊抓取信息 - 例如:
OWNERNAME.Text = ((TextBlock)EPICGrid.Columns[1].GetCellContent(EPICGrid.SelectedItem)).Text;
和/或
OWNERNAME2.Text = ((TextBlock)EPICGrid.Columns[16].GetCellContent(EPICGrid.SelectedItem)).Text;
什麼我跑進入它不會抓住單元格中的信息,除非我滾動並顯示列,所以我只能抓住前4列數據,因爲它們顯示網格變得可見時。
我無法從第5-20列的數據中獲取數據,除非我對這些列進行調整並使其可見。他們不必在點擊過程中可見......它似乎只是在查看該列之前數據才真正加載。
我想我應該說第一個記錄/行加載所有的數據/單元格/列,我可以從第一個記錄抓取任何數據,但問題發生在記錄2 - *。
只是澄清 - 我的問題不是我的列或行的可見性。我的問題是SDK DataGrid看起來像是在按需加載數據。因此,如果該列在某一點或另一點不在視圖中,則單元中的信息不可用。
我不想顯示所有列,也不想讓用戶看到所有列,因此我想禁用滾動條,但是當用戶點擊某一行時,我需要抓取信息在某些單元格中,並且由於該列尚未加載,所以信息不存在。
如何關閉按需功能?
我做了搜索,發現有人曾與行裝載和建議被設置VirtualizingStackPanel.VirtualizationMode = Standard
它幾乎像這個問題是從VirtualizingStackPanel.VirtualizationMode梗,但我將此屬性設置爲標準,類似的問題回收和沒有運氣。
這裏的定義:
缺省情況下,VirtualizingStackPanel用於 創建一個項目容器中的每個可見項目,並丟棄它,當不再需要它(如 當該項目被滾出視)。當ItemsControl包含很多項目時,創建和丟棄項目容器 的過程可能會對性能產生負面影響。當 VirtualizingStackPanel.VirtualizationMode設置爲Recycling時,VirtualizingStackPanel重新使用項目容器,而不是每次創建一個新的 。
在初始加載時,如果單元格不可見,我不能抓住單元格 的內容(除非它是第一個記錄/行)。一旦和之後的細胞/ 列是可見的,那麼信息是可用的。
JBrooks,感謝您的帖子。我有麻煩搞清楚什麼是myEntity所...我需要聲明或添加REF /組裝故reconized ...對不起我還是綠色的。 –
@DickLong myEntity所只是我舉的例子一樣MyTable的,MyClass的,等在Silverlight實體的集合通常是從實體框架直通RIA服務得到它後一個DataGrid綁定到什麼。這3種技術在Silverlight應用程序中很常見。 – JBrooks