2009-08-18 21 views
0

私はアドバイスと明確化が必要です。私は現在、データベースの内容をデータグリッドに表示する必要のあるモニタアプリケーションに取り組んでいます(私はWPFToolkitグリッドbtwを使用しています)。グリッドは、ADO.NET DataSetのテーブルにバインドされ、正常に動作します。 UIのボタンを使ってDataSetを変更すると、グリッドが更新され、誰もが幸せになります(バインディングとADO.NETはthis blogでうまく説明されています)。ただし、データベースは他のアプリケーションによって更新され、モニタアプリケーションはこれらの変更を自動的に表示する必要があります。データセットはデータベースをポーリングすることによって更新されます(DBからのpost_eventをリスンするさまざまな理由が該当しません)が、変更はグリッドに表示されません。マルチスレッドADO.NETアプリケーションでのWPFとデータバインディング

私が理解している限り、これはWPFデータバインディングの機能です。 UI以外のスレッドからソースを更新することはできません。私の心の中では、これは気違いです。他のユーザーやアプリケーションからデータが入力される場所には、何千ものアプリケーションが存在するはずです。 Dispatcherを使用してソースの実際の更新をUIスレッドに移動しようとしましたが、同じエラーが表示されます。

これで私の質問に答えました:私の分析は正しいのですか?問題が解決する方法についてアドバイスがありますか?また、私の分析が正しい場合、誰かがWPFがそのように機能する理由を説明しようとすることができますか?

ありがとうございました

答えて

0

です。私はADO.NET内で動作させる方法を見つけ出していませんが、ObservableCollectionの簡単な派生物を使用する良いソリューションhereが見つかりました。

DataTableのRowChangedイベントを使用して、テーブルのBindableCollectionビューを追跡し、それを自分のDataContextとして使用します。魅力のように動作します。

関連する問題