AutoCompleteBox不保留文本

时间:2009-09-21 21:23:56

标签: silverlight web-services data-binding xaml autocomplete

我有一个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()方法,因此我不确定为什么会这样做或如何解决它。想法?

2 个答案:

答案 0 :(得分:2)

您的ProductInfo和服务引用可能实际上是不同的对象。

考虑将AutoCompleteBox上的ValueMemberPath或ValueMemberBinding属性设置为属性(例如DisplayText,它返回相同的Name +“ - ”+ Description)。

值成员属性将始终在对象的ToString上受到尊重。

答案 1 :(得分:2)

创建与生成的服务代理类具有相同名称空间的ProductInfo的部分类,覆盖其中的ToString()。