2011-02-08 68 views
1

在顯示錶格數據的只讀數據網格中,當用戶鍵入某些字符時,我希望具有(開箱即用)功能以跳轉到行。wpf datagrid只讀時跳轉到行

說出以下記錄可供選擇:

  • ...一些數據...
  • 辦公用品
  • 訂單
  • ...更多數據...

當用戶輸入「O」時,應選擇ID爲「Office supplies」的行。當用戶在此之後鍵入「r」時,應選擇「訂單」行。

我的問題實際上是:是否有一個開箱即用的解決方案,或者我必須創建一些自定義?

回答

1

沒有「開箱即用」功能,要做到這一點,你必須創建自己的。

我建議:

  • 聽鍵盤(當焦點在DG的實例)
  • 存儲受災鍵每次鍵擊後的緩衝
  • 裏面,循環在每一個細胞的dataSource查找第一個匹配項(取決於數據大小,這可能非常昂貴,因爲您必須爲每個單元格進行字符串比較,對於數據源中的每個單元格在最差情況下進行比較......)
  • set dataGrid的currentCell到給定的行/列位置(有幾個方法可以做到這一點)

所以這並不複雜,但它需要一些編碼,最重要的,如果你有龐大的數據集,這可能會變成一場噩夢的表現。

1

您幾乎必須爲搜索輸入創建一個文本框,然後使用LINQ(或任何其他方式)過濾您的DataGrid綁定的集合,並將生成的對象過濾到另一個集合中。最後,將DataGrid重新綁定到這些克隆的對象,並重新設置窗口的DataContext,以便DataGrid知道綁定更改。最後,實施檢查,以便如果用戶離開並清空文本框,則重新綁定到原始集合並再次重新設置DataContext。

希望這有助於;)

+0

其實,我當時只是在尋找一種方法來選擇一個元素。但是,這也是其中一個要求:)謝謝! – 2011-02-09 07:35:11

+0

我很高興你喜歡它。我在過去也遇到了類似的問題,並且解決了這個問題:) – Machinarius 2011-02-09 12:59:59