如果您願意,圖片將包含一個包含ListBox的單個窗口的Visual Studio 2008 WPF應用程序。此應用程序包含一個方法,如下所述,它將ListBox綁定到數據庫表的內容。數據綁定WPF ListBox以響應WCF服務調用
此應用程序也恰好實現WFC服務合同,託管上述WCF服務。
數據綁定方法如下在respose調用以在窗口上都按下按鈕,並且響應於一個方法的針對由應用程序託管WCF服務遠程調用。
當按鈕調用時,按下綁定可正常工作,並且列表框反映數據庫表的內容。我可以在底層表中插入一些記錄,點擊按鈕並刷新列表框的內容以反映新記錄。但是,通過WCF服務遠程觸發時,對數據庫的任何更改都不會反映在列表框中。從單步執行代碼開始,數據集包含正確的表格視圖,但列表框保留了表格的前一個視圖,並且不反映數據集合的內容。
起初我以爲這聽起來像一個線程的問題,所以我想利用同步對象,但無濟於事。從我的調查來看,這兩個調用都是在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;
}
}
更新:我重新實現遠程通知機制使用遠程而非WCF和數據綁定現在工作當被遠程和本地調用時。使用WCF必須有一些背景含義?
爲響應尼克非常感謝。我曾嘗試按照您的建議洗牌,然後嘗試了各種回收DataSet的方法,但仍然沒有運氣。 – 2009-07-20 07:12:47