ListBoxを含む単一のウィンドウを持つVisual Studio 2008 WPFアプリケーション。このアプリケーションには、ListBoxをデータベーステーブルの内容にバインドする、以下に概説するメソッドが含まれています。WCFサービス呼び出しに応答してWPF ListBoxをバインドするデータ
このアプリケーションは、WCFサービスをホストしているWFCサービスコントラクトを実装することもあります。
以下のデータバインディングメソッドは、ウィンドウ上のボタンの押下と、アプリケーションによってホストされるWCFサービスに対してメソッドがリモートで呼び出されたことに応答して呼び出されます。
ボタンを押すと呼び出されると、バインディングが正しく機能し、リストボックスにはデータベーステーブルの内容が反映されます。いくつかのレコードを基になるテーブルに挿入してボタンを押すと、リストボックスの内容が更新され、新しいレコードが反映されます。ただし、WCFサービスを介してリモートでトリガされた場合、データベースへの変更はリストボックスに反映されません。コードをステップ実行すると、データセットにはテーブルの正しいビューが含まれますが、リストボックスはテーブルの前のビューを保持し、データセットの内容を反映しません。
私はこれがスレッドの問題のように思えたので、Dispatcherオブジェクトを利用しようとしましたが、役に立たなかったのです。私の調査から、どちらの呼び出しもUIスレッドで受信されます。
任意の提案を高く評価 - それは私の運を知って、おそらく疑いの余地明らかに何か...
private void BindData()
{
SqlConnection connection;
using (connection = new SqlConnection(CONNECTION_STRING))
{
DataSet dtSet = new DataSet();
SqlCommand command = new SqlCommand("SELECT * FROM TheTableWithMyStuffIn", connection);
SqlDataAdapter adapter = new SqlDataAdapter();
connection.Open();
adapter.SelectCommand = command;
adapter.Fill(dtSet, "TheTableWithMyStuffIn");
listBox1.DataContext = dtSet;
}
}
UPDATE:私はむしろWCFよりもリモーティングを使用するために再実装されたリモート通知メカニズム、およびデータバインディングが機能するようになりましたリモートでもローカルでも呼び出されます。 WCFの使用には文脈上の意味がありますか?
感謝を試してみたいことがあります。私はあなたが提案したように注文をシャッフルしようとしましたが、DataSetをリサイクルするさまざまな方法を試みましたが、まだ運がありません。 –