2009-01-19 60 views
1

我想在Silverlight 2中編寫一個相當簡單的用戶控件,它允許用戶搜索現有地址,可選地更新所選地址並添加新地址。如果綁定的實例未在Silverlight 2中實現INotifyPropertyChanged,那麼如何使用雙向綁定?

爲此,我將一個簡單的WCF服務放在一起,這個服務允許進行簡單的查詢,而且我目前將它連接到一個文本框,列表框組合(即將用Silverlight工具包中的AutoCompleteBox替換)。

我的問題是更多的瞭解一個,從我服務的返回類型爲類型的IList的<地址>和地址不執行INotifyPropertyChanged,它似乎並沒有適合的對象從服務返回(也可稱爲由其他客戶端)擁有SL2特定功能。使用雙向綁定來編輯現有地址的最佳方法是什麼?

基本思路因而如下:

  1. 用戶信息輸入到文本框
  2. 服務調用來檢索匹配地址的IList <地址>正在被返回的ObservableCollection <地址>在Reference.cs爲我服務
  3. 返回值設置爲列表框的ItemSource
  4. 用戶選擇正確的地址並指示需要更新
  5. 地址實例綁定來控制容器包含多個文本框

基本上我想在綁定文本框的任何變化在Address實例自動反映,但沒有INotifyPropertyChanged的是如何將這項工作?我是否必須在我的SL2應用程序中創建另一個類,以有效地覆蓋我的服務數據對象的屬性實現?

有任何人可以點我就這一個正確的方向,因爲它只是沒有對我做出感...

乾杯,

史蒂夫

回答

3

你是如何生成的WCF代理?我在VS2008的SL2項目中使用了「添加服務引用...」,我生成的代理實現了INotifyPropertyChanged(即使服務器端類型沒有)。

對於普通的WCF(不是SL2),svcutil有一個/enableDataBinding開關可以完成所有這些。如果您使用的是IDE,可能會有一個複選框。

因爲這些代理是從元數據生成的,所以它們完全獨立於服務器端代碼,所以實施INotifyPropertyChanged的SL2版本沒有問題。

+0

我正在使用VS.NET 2008中的「添加服務引用」對話框,查看服務引用設置,一旦創建引用似乎不包括可能的外觀選項。 – 2009-01-19 17:47:11

相關問題