2011-04-26 60 views
0

我是一個.NET開發人員,從Winforms轉移到WPF,遇到了一個常見問題,我想找到一個WPF特定的解決方案。我有一個基本上綁定到SQL中的表的GridView。我碰巧使用MVVM,所以這是間接完成的,GridView實際上綁定到ViewModel,它從實體模型中獲取數據。在Winforms中,爲了保持實時同步,我需要一個後臺線程,每隔一段時間搜索一次更新並獲取最新版本的SQL表數據。當然,我可以在WPF中做到這一點,但我想知道是否有更好的方式在WPF中執行此操作,UI可以在更新表時真正更新「實時」。該應用程序將在許多機器上,所以當本地用戶通過應用程序以某種方式更改數據時,我不能簡單地獲得更新。刷新按鈕很糟糕,所以我也不想那麼做。 WPF中有這樣的最佳做法嗎?在WPF中保持GridView爲最新狀態

回答

2

輪詢方法仍然健全。就「更好」的方式而言,在SQL 2005或更新版本的ADO.NET中,有一些方法可以設置通知(例如查詢更改通知)。這不是一個WPF特定的實現,但是,可以應用於Windows窗體。

1

tbh,我會做它非常相似,即後臺線程輪詢,然後更新綁定的集合。如果你想要一個雙工通信,你可以做到這一點o避免輪詢,但它帶來了自己的問題,並沒有任何關於WPF。請注意以下幾點:

  • 使用ObservableCollection作爲ItemsSource。通過這種方式,您可以提供已更改的「增量」,從而將服務器通信降至最低。
  • 當您從後臺修改ObservableCollection時使用Dispatcher.Invoke,否則......您知道WinForms的問題。
相關問題