2009-12-31 13 views
8

我嘗試以下,所有這些失敗的功能ScrollIntoView,給一個NullReferenceException:WPF工具包:如何​​滾動數據網格以顯示代碼背後的選定項目?

// doesn't work 
grid.SelectedItem = sItem; 
grid.ScrollIntoView(sItem); 

// doesn't work 
grid.SelectedItem = sItem; 
grid.Focus(); 
grid.CurrentColumn = grid.Columns[0]; 
grid.UpdateLayout(); 
grid.ScrollIntoView(sItem,grid.Columns[0]); 

// doesn't work 
grid.SelectedItem = sItem; 
grid.UpdateLayout(); 
grid.ScrollIntoView(sItem); 

的問題是,當我選擇從代碼後面一排,選擇是不可見的 - 它的地方向下探底。除非用戶滾動,否則他們覺得選擇已經消失。我需要滾動DataGrid到用戶可以看到選擇的點。

我也嘗試過「BringIntoView」,但沒有運氣。

回答

5

虛擬化堆棧面板不具有項目的容器,因爲項容器不存在的視野之外的項目,這就是爲什麼表現出這種錯誤。禁用虛擬化現在可以解決此問題,並且該錯誤已報告給codeplex toolkit項目。

33

嘗試:

grid.SelectedItem = sItem; 
grid.UpdateLayout(); 
grid.ScrollIntoView(grid.SelectedItem); 
+0

在第一個語句我分配grid.SelectedItem = sItem,你認爲grid.SelectedItem和sItem是不同的嗎?對不起,它的錯誤答案永遠不會奏效。 – 2009-12-31 10:52:22

+0

SelectedItem封裝在依賴項屬性上,所以我的代碼與您擁有的代碼不同。試試看,我有同樣的問題,這對我有用。 見dissembly: [類別( 「外觀」),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),可綁定(真)] 公共對象的SelectedItem { 得到 { 回報base.GetValue(SelectedItemProperty); } set { base.SetValue(SelectedItemProperty,value); } } – 2009-12-31 12:01:09

+0

阿卡什,你給這個去了嗎? – 2010-01-04 10:12:37

相關問題