我有一个Silverlight测试项目,我正在返回一个List< ProductInfo> ...
public class ProductInfo
{
public override string ToString()
{
return Name + " - " + Description;
}
public string Name { get; set; }
public string Description { get; set; }
}
它成功地将名称和描述返回到定制的AutoCompleteBox,并定义了以下DataTemplate:
<DataTemplate x:Key="SearchBoxDataTemplate">
<StackPanel Orientation="Vertical" HorizontalAlignment="Right" Margin="0, 0, 8, 0">
<TextBlock HorizontalAlignment="Right" Foreground="Blue"
FontSize="18" Text="{Binding Name}" Padding="2" />
<TextBlock HorizontalAlignment="Right" Foreground="Black"
FontSize="8" Text="{Binding Description}" Padding="2" />
</StackPanel>
</DataTemplate>
但是,一旦选择了一个项目,AutoCompleteBox就会填充对象类型的名称(由WCF服务返回)......
IdeasAndTesting_SL_01.ServiceReference1.ProductInfo
您会注意到我覆盖了ProductInfo对象的ToString()方法,因此我不确定为什么会这样做或如何解决它。想法?
答案 0 :(得分:2)
您的ProductInfo和服务引用可能实际上是不同的对象。
考虑将AutoCompleteBox上的ValueMemberPath或ValueMemberBinding属性设置为属性(例如DisplayText,它返回相同的Name +“ - ”+ Description)。
值成员属性将始终在对象的ToString上受到尊重。
答案 1 :(得分:2)
创建与生成的服务代理类具有相同名称空间的ProductInfo的部分类,覆盖其中的ToString()。