2009-07-19 61 views
2

如果您願意,圖片將包含一個包含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必須有一些背景含義?

回答

0

我可能完全關閉光束這裏因爲我沒有任何與.NET多年,但沒有其他人提供了到目前爲止的答案,所以這裏去。

從MSDN文檔的快速掃描如何數據綁定在.NET框架中實現,我得到更新,以控制取決於被解僱綁定的數據源改變時性事件的印象。我注意到,在你目前的代碼中,ListBoxDataContext酒店有分配給它的新DataSet數據已通過Fill方法被檢索後。

難道是這樣的,在已經檢索到數據的情況下,應該導致ListBox實現更新數據的一些事件是否發生得太快?人們會認爲DataContext屬性的設置足以導致它更新;但考慮到在框架背後似乎有很多管道工程,並且在不同環境中修改後成功更新了ListBox,我會開始懷疑有漏洞的抽象:也就是說,儘管有些東西按預期工作當以一種方式使用時,以另一種方式使用時會失敗,因爲潛在的管道(雖然不一定有缺陷)是不同的。

也許分配DataContext屬性之前填寫DataSet將會產生差異。或者,這可能只是一個表面上合理的猜測,但完全和明顯錯誤,並且只會背叛我幾乎完全缺乏對.NET內部知識的知識。

無論哪種方式,祝你好運:-)

+0

爲響應尼克非常感謝。我曾嘗試按照您的建議洗牌,然後嘗試了各種回收DataSet的方法,但仍然沒有運氣。 – 2009-07-20 07:12:47

0

我不知道,如果DataSet實現了相應的接口,自動將導致一個WPF列表框更新,但假設它確實,試試這個:而不是創建全新的DataSet並將其分配給列表框,請嘗試從數據庫中重新填寫相同的實例。如果我正在寫這個,我可能會使用ObservableCollection<T>字段而不是DataSet,但這意味着您需要將數據移動到DTO或實體中。

+0

乾杯夫人。我已經試過回收數據集沒有效果。奇怪的是,這是完美的響應按鈕按下,它只是在WCF方法的上下文中調用時,它不起作用。 數據將在某個時刻移入實體模型中 - 上面的代碼僅僅是爲了說明問題而進行的簡化。無論如何,它可能是值得追求的,希望它能解決這個問題,但我的內心極客需要知道爲什麼這不起作用。 – 2009-07-20 09:07:50

2

您是否試過檢查.Net 3/.Net 3.5/Windows SDK附帶的Service Trace Viewer

可能值得檢查正在反彈的消息,看看是否有任何東西出現在那裏。

祝你好運。

編輯

你可能想嘗試在檢測無聲數據綁定錯誤this文章...

+0

Cheers Kieron - 關於無提示數據綁定錯誤的文章在我的問題的上下文中看起來非常有趣。我現在有一個解決遠程處理的解決方案,但我會在接下來的幾天重新審視它,以便深入瞭解爲什麼WCF不能用作IPC機制。 – 2009-07-22 07:10:08

+0

np,保持我們的發佈。有趣的是看看問題是什麼。 – Kieron 2009-07-22 09:03:47

+0

出於感興趣的問題,您使用的是哪種類型的頻道? – Kieron 2009-07-22 11:41:12