Silverlight中的自动完成框文本

时间:2010-04-19 06:28:47

标签: silverlight autocompletebox

我无法按照自己的意愿在System.Windows.Controls.Input中获取自动完成框。当我开始输入显示已过滤列表的下拉列表时,它不显示我要绑定的属性,而是显示类名。

因此,在下面的示例中,当我输入my时 - 而不是显示“我的名字”,它显示MyNamespace.Person。但是,当我从自动完成列表中选择项目时,它会在文本框中显示FullName属性。我确定我在某个地方错过了一个简单的自动完成框属性,但我看不到它。

示例代码:

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName
        {
            get { return string.Format("{0} {1}", FirstName, LastName); }
        }
    }

在我的xaml代码中,我创建了一些Person对象并将它们存储在列表中并将该列表绑定到自动完成框

List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "My", LastName = "Name" });
people.Add(new Person { FirstName = "Fernando", LastName = "Torres" });
acbNames.ItemsSource = people;

我的xaml:

<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />
输入'my'后输入

/ *,自动完成显示'MyNamespace.Person'而不是'我的名字',但在从列表中选择项目后显示'我的名字'* /

3 个答案:

答案 0 :(得分:3)

事实证明我需要在AutoCompleteBox的下拉部分使用ItemTemplate,因此它的xaml现在如下:

<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
            <my:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FullName}"/>
                </DataTemplate>
            </my:AutoCompleteBox.ItemTemplate>
        </my:AutoCompleteBox>

答案 1 :(得分:2)

是的,您的问题是因为您没有放置项目模板。 但是如果你放置项目模板并且仍然有问题,请阅读Sandro编写的内容。

我有同样的问题。我使用控件样式的静态资源解决了它

这是我使用的风格:

<Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
    <Setter Property="Margin" Value="5,0,5,0"/>
    <Setter Property="MinWidth" Value="100"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property ="HorizontalAlignment" Value="Right"/>
</Style>

如果我不使用此样式,我的海关项目在DataItem中配置时无法正确显示,而是显示类名称。

份额|修改

这也适用于我,但仅当我从工具包应用了一些自定义主题样式时。 当您使用工具包中的主题

时,还有一些其他解决方法

最佳,

debarisi

答案 2 :(得分:1)

我有同样的问题。我使用控件样式的静态资源解决了它

这是我使用的风格:

    <Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
        <Setter Property="Margin" Value="5,0,5,0"/>
        <Setter Property="MinWidth" Value="100"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property ="HorizontalAlignment" Value="Right"/>
    </Style>

如果我不使用此样式,我的海关项目在DataItem中配置时无法正确显示,而是显示类名称。