1

我正在尝试在 Silverlight 2 中编写一个相当简单的用户控件,它允许用户搜索现有地址、可选地更新所选地址并添加新地址。

为此,我整理了一个简单的 WCF 服务,允许进行简单的查询,我目前正在将其连接到一个文本框、列表框组合(很快将被 Silverlight 工具包中的 AutoCompleteBox 替换)。

我的问题更多的是理解,我的服务的返回类型是 IList<Address> 类型并且 Address 没有实现 INotifyPropertyChanged 并且它似乎不适合从服务返回的对象(也可能被其他客户端调用)加入 SL2 特定功能。促进双向绑定以编辑现有地址的最佳方法是什么。

基本思想如下:

  1. 用户在文本框中输入信息
  2. 调用服务以检索匹配地址 IList<Address>,该地址在我的服务的 Reference.cs 中作为 ObservableCollection<Address> 返回
  3. 返回值设置为列表框的 ItemSource
  4. 用户选择正确的地址并表示需要更新
  5. 绑定到包含多个文本框的控件容器的地址实例

本质上,我希望绑定文本框中的任何更改都自动反映在 Address 实例中,但是没有 INotifyPropertyChanged 这将如何工作?我是否必须在我的 SL2 应用程序中创建另一个类来有效地覆盖我的服务数据对象的属性实现?

那里的任何人都可以为我指出正确的方向,因为这对我来说没有意义......

干杯,

史蒂夫

4

1 回答 1

3

您如何生成 WCF 代理?我在 VS2008 的一个 SL2 项目中使用了“添加服务引用...”,并且我生成的代理确实实现INotifyPropertyChanged了(即使服务器端类型没有实现)。

对于常规 WCF(不是 SL2),svcutil有一个/enableDataBinding开关可以完成所有这些操作。如果您使用的是 IDE,可能会有一个复选框。

因为这些代理是从元数据生成的,它们完全独立于服务器端代码,所以 SL2 版本实现INotifyPropertyChanged.

于 2009-01-19T17:36:36.430 回答