代码之家  ›  专栏  ›  技术社区  ›  JSBach

在WS存根类中实现方法

  •  0
  • JSBach  · 技术社区  · 15 年前

    我正在开发一个WindowsPhone7应用程序,我有一个返回列表的.NETWebService。此列表应绑定到列表框。

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

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

    我认为这是一个很常见的情况,所以应该有一个解决办法,我错过了。那么,我如何在WindowsPhone7中将ToString()方法定义为这个对象,以便将它绑定到列表?

    谢谢您, 奥斯卡

    2 回复  |  直到 15 年前
        1
  •  1
  •   Aaron McIver    15 年前

    正确的方法是根据MVVM准则,将来自WS的原始数据转换成一个有代表性的模型,并将自己与服务器端的关注点分离。在您和WS之间创建一个代理。

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

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

    你的模型可能是。。。

    public String Title
    {
        get
        {
             return Name + Quantity;
        }
    }
    
        2
  •  1
  •   Jon Skeet    15 年前

    存根是作为不重写的部分类生成的吗 ToString 他们自己?如果是这样的话,很简单-添加自己的部分类。例如:

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