我正在开发一个Windows phone7应用程序,我有一个返回List的.NET Web服务。此列表应绑定到ListBox。
Product是服务器中定义的类,Visual Studio从WSDL获取其定义,并在我的Windows Phone应用程序中创建存根。
列表调用“toString()”方法以显示GUI中的项目,所以我的列表中有一个奇怪的字符串。我想更改为用户友好的字符串(名称 - 数量)。 为此,我想覆盖toString()方法,但在服务器定义中更改它并没有帮助,因为方法没有在WSDL中公开。 当我刷新或更改引用时,自己更改存根会导致数据丢失。
我认为这是一个非常常见的案例,因此应该有一个我不知道的解决方案。那么请问,如何在windows phone7中将方法ToString()定义为此对象,以便将其绑定到列表中?
谢谢你, 奥斯卡
答案 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;
}
}