在WS-stub-classes中实现方法

时间:2010-11-13 12:57:48

标签: c# .net web-services

我正在开发一个Windows phone7应用程序,我有一个返回List的.NET Web服务。此列表应绑定到ListBox。

Product是服务器中定义的类,Visual Studio从WSDL获取其定义,并在我的Windows Phone应用程序中创建存根。

列表调用“toString()”方法以显示GUI中的项目,所以我的列表中有一个奇怪的字符串。我想更改为用户友好的字符串(名称 - 数量)。 为此,我想覆盖toString()方法,但在服务器定义中更改它并没有帮助,因为方法没有在WSDL中公开。 当我刷新或更改引用时,自己更改存根会导致数据丢失。

我认为这是一个非常常见的案例,因此应该有一个我不知道的解决方案。那么请问,如何在windows phone7中将方法ToString()定义为此对象,以便将其绑定到列表中?

谢谢你, 奥斯卡

2 个答案:

答案 0 :(得分:1)

是否将存根生成为不会覆盖ToString的部分类?如果是这样,很容易 - 添加你自己的部分类。例如:

// Autogenerated stub provides the rest of the code
public partial class Order
{
    public override string ToString()
    {
        return string.Format("{0} - {1}", Name, Quantity);
    }
}

答案 1 :(得分:1)

正确的方法是从WS中获取原始数据并将其转换为代表模型,遵守MVVM准则并将自己与服务器端的关注区分开来。在你和WS之间创建一个代理。

此外,完成此操作后,您只需在该模型上创建一个属性,然后可以绑定该属性并根据需要返回数据,并使用DisplayMemberPath属性。

<ListBox ItemsSource="{Binding}"
         DisplayMemberPath="Title">

你的模型可能就像......

public String Title
{
    get
    {
         return Name + Quantity;
    }
}