【问题标题】:AutoCompleteBox not retaining textAutoCompleteBox 不保留文本
【发布时间】:2009-09-23 09:56:27
【问题描述】:

我有一个 Silverlight 测试项目,我在其中返回一个列表 ...

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-27
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2017-06-08
        • 2023-04-02
        相关资源
        最近更新 更多