2

我无法让 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;

我的xml:

<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />

/* 输入 'my' 后,自动完成显示 'MyNamespace.Person' 而不是 'My Name',但在从列表中选择项目后显示 'My Name' */

4

3 回答 3

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>
于 2010-04-19T06:50:23.550 回答
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>

如果我不使用这种样式,我的 Customs Item 不会像我在 DataItem 中配置的那样正确显示,而是显示类名称。

分享|编辑

这也适用于我,但只有当我从工具包中应用了一些自定义主题样式时。当您使用工具包中的主题时,还有其他一些解决方法

最好的,

去巴里西

于 2012-12-11T21:55:47.153 回答
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>

如果我不使用这种样式,我的 Customs Item 不会像我在 DataItem 中配置的那样正确显示,而是显示类名称。

于 2011-02-04T06:10:08.623 回答